Promise 在ES6中可以直接使用:
var promise = new Promise(function(resolve, reject) {
// 異步操作的代碼
if (/* 異步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
Promise構(gòu)造函數(shù)的參數(shù)是一個函數(shù),這個參數(shù)函數(shù)的兩個參resolve和reject也是JavaScript提供,可以認為是固定寫法。
當執(zhí)行成功,Promise對象的狀態(tài)會從未完成(Pending)變?yōu)?code>成功(Resolved),這一步就是resolve函數(shù)所做的事情;反之執(zhí)行reject函數(shù),將Promise對象的狀態(tài)變?yōu)?code>失?。≧ejected),將錯誤作為參數(shù)傳出去。
Promise實例生成后,可以用then方法分別指定Resolved和Rejected狀態(tài)的回調(diào)函數(shù):
promise.then(function(value){
//成功回調(diào)
},function(error){
//失敗回調(diào) 一般使用 console.error(error)
})
指定多個回調(diào)函數(shù)的時候,依次在后面添加. then()即可,失敗回調(diào)只寫在最后一個.then回調(diào)里。