Promise

是什么

Promise是異步編程的一種解決方案。Promise對(duì)象表示了異步操作的最終狀態(tài)(完成或失?。┖头祷氐慕Y(jié)果。

其實(shí)我們?cè)趈Query的ajax中已經(jīng)見識(shí)了部分Promise的實(shí)現(xiàn),通過Promise,我們能夠?qū)⒒卣{(diào)轉(zhuǎn)換為鏈?zhǔn)秸{(diào)用,也起到解耦的作用。

怎么用

Promise接口的基本思想是讓異步操作返回一個(gè)Promise對(duì)象

三種狀態(tài)和兩種變化途徑

Promise對(duì)象只有三種狀態(tài)。

  • 異步操作“未完成”(pending)

  • 異步操作“已完成”(resolved,又稱fulfilled)

  • 異步操作“失敗”(rejected)

這三種的狀態(tài)的變化途徑只有兩種。

  • 異步操作從“未完成”到“已完成”

  • 異步操作從“未完成”到“失敗”。

這種變化只能發(fā)生一次,一旦當(dāng)前狀態(tài)變?yōu)椤耙淹瓿伞被颉笆 ?,就意味著不?huì)再有新的狀態(tài)變化了。因此,Promise對(duì)象的最終結(jié)果只有兩種。

異步操作成功,Promise對(duì)象傳回一個(gè)值,狀態(tài)變?yōu)閞esolved。

異步操作失敗,Promise對(duì)象拋出一個(gè)錯(cuò)誤,狀態(tài)變?yōu)閞ejected。

生成Promise對(duì)象

通過new Promise來生成Promise對(duì)象:

var promise = new Promise(function(resolve, reject) {  // 異步
        
		

網(wǎng)友評(píng)論