ES6 promise
阿新 • • 發佈:2017-09-11
完成 進行 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