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