Promise是一个对象,同时是一种规范,针对异步操做约定统一接口,表示一个异步操做的最终结果,以同步方式写代码,执行的操做是异步的,保证程序的执行顺序是同步的。javascript
三种状态变化只能由 未完成----失败 或 未完成----已完成java
PromiseA与A+不一样点es6
经过promise对象的 then()方法把流程里面依次执行的异步操做,也就是回调函数,如今直接传递给Promise对象的then()方法。promise
promiseObj.then( onFulfilled , onRejected) onFulfilled = function(value){ return promiseObj2 } onRejected = function(err){}
Promise会保证 then方法执行的顺序,第一个Promise完成时,后面链式调动的then方法,参数里的回调函数会依次调用,同时这些回调函数不是在执行 then()方法时马上执行,而是必须等待前面Promise完成后才能执行。异步
回调函数能够写成规范的链式写法,程序流程很清楚,一整套流程能够实现为多个异步操做,部署一个回调函数,或为多个回调函数中抛出的错误,统一指定一个方法。函数
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) })
bluebird既兼容Promise类库,又扩展了取消promise对象的运行,取的Promise的运行进度,以及错误处理的扩展监测。spa