每個promise都會經歷乙個短暫的生命週期:先是處於進行中(pending)的狀態,此時操作尚未完成,所以它也是未處理(unsettled)的;一旦非同步操作執行結束,promise則變為已處理(settled)的狀態。已處理的狀態又分為以下兩種:
所有promise都有then()方法,它接受兩個引數:第乙個是當promise的狀態變為fulfilled時要呼叫的函式,與非同步操作相關的附加資料都會傳遞給這個完成函式;第二個是當promise的狀態變為rejected時要呼叫的函式,其與完成時呼叫的函式類似,所有與失敗狀態相關的附加資料都會傳遞給這個拒絕函式。
then()的兩個引數都是可選的,可以按照任意組合的方式來監聽promise,執行完成或被拒絕都會被響應。來看下面例項:
let promise = readfile("example.txt");
promise.then(function(contents),function(err));
promise.then(function(contents));
promise.then(null,function(err));
上面這3次then()呼叫操作的是同乙個promise。第乙個同時監聽了執行完成和執行被拒;第二個只監聽了執行完成,錯誤時不報告;第三個只監聽了執行被拒,成功時不報告。
promise還有乙個catch()方法,相當於只傳入拒絕處理程式的then()方法。如下,catch()方法和then()方法實現的功能是等價的:
promise.catch(function(err));
//與以下呼叫相同
promise.then(null,function(err));
深入理解es6的promise
一 promise入門 1.promise物件是什麼 函式的另一種原生實現,比之前 函式的寫法機構清晰,功能強大,2.以前 這麼寫 function a fn else 1000 呼叫a function m 3.用promise 寫 function a else 1000 呼叫a then fu...
ES6 Promise基本用法
1 promise是什麼 promise是非同步程式設計的一種解決方案,在es6中promise被列為了正式規範,統一了用法,原生提供了promise物件。2 基礎用法 resolve代表成功 reject失敗 都是乙個函式 let p new promise function reslove,re...
ES6 Promise使用介紹
1 什麼是promise promise 是非同步程式設計的一種解決方案,比傳統的解決方案 函式和事件 更合理和更強大。這麼說可能不夠直觀的理解,看下面的兩個例子 callback 函式 function getcallback n,callback 2000 getcallback 3,funct...