1. 程式人生 > >ES6 promise

ES6 promise

完成 進行 pan console bsp 狀態 ace 新建 ()

let promise = new Promise (function (resolve, reject) {
if (true) {
resolve(value)
//異步操作成功時執行的代碼
} else {
reject(error)
//異步操作失敗時候執行的代碼
}
})

resolve函數的作用是,將Promise對象的狀態從“未完成”變為“成功”(即從 Pending 變為 Resolved),在異步操作成功時調用,並將異步操作的結果,作為參數傳遞出去;reject函數的作用是,將Promise對象的狀態從“未完成”變為“失敗”(即從 Pending 變為 Rejected),在異步操作失敗時調用,並將異步操作報出的錯誤,作為參數傳遞出去。

promise.then(resolved, rejected)
// resolved和rejected分別是異步操作執行成功和失敗時候回調函數,rejected回調函數是可選的
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, ‘done‘);
});
}

timeout(100).then((value) => {
console.log(value);
});

promise新建後就會立即執行,then中指定的回調函數,將在當前腳本所有同步任務執行完才會執行

promise.then(resolved).catch(rejected)

catch用於捕獲錯誤

promise.all([p1, p2, p3]) //p1,p2,p3三個異步操作同時進行,只有當三個都完成的時候才返回fulfilled,只要有一個rejected就變為rejected

var p = promise.race([p1, p2, p3]) //只要p1、p2、p3中有一個實例率先改變狀態,p的狀態就跟著改變
promise.resolve()將對象轉為promise對象
var jsPromise = Promise.resolve($.ajax(‘/whatever.json‘));

Promise.resolve(
‘foo‘) // 等價於 new Promise(resolve => resolve(‘foo‘)) promise.reject()

ES6 promise