<div class="ball ball1" style="margin-left: 0"></div>	
<div class="ball ball2" style="margin-left: 0"></div>	
<div class="ball ball3" style="margin-left: 0"></div>
<script>   
var ball1 = document.querySelector(".ball1")
var ball2 = document.querySelector(".ball2")		
var ball3 = document.querySelector(".ball3")
var Promise = window.Promise		
function promiseAnimate(ball,distance){			
    return new Promise(function(resolve,reject){				
        function _animate(){					
            setTimeout(function(){						
                var marginLeft = parseInt(ball.style.marginLeft,10)						
                if(marginLeft === distance){							
                    resolve()						
                }else{							
                    if(marginLeft < distance){								
                        marginLeft ++							
                    }else{								
                        marginLeft --							
                    }							
                    ball.style.marginLeft = marginLeft + 'px'							
                    _animate()						
                }					
            },13)				
        }			
    })		
}
promiseAnimate(ball1,100)			
    .then(function(){				
        return promiseAnimate(ball2,200)			
    })			
    .then(function(){				
        return promiseAnimate(ball3,300)			
    })			
    .then(function(){				
        return promiseAnimate(ball3,150)			
    })			
    .then(function(){				
        return promiseAnimate(ball2,150)			
    })			
    .then(function(){				
        return promiseAnimate(ball1,150)			
    })