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