es6中Promise多個then的使用方法

2022-09-23 09:47:18 字數 1792 閱讀 7030

promise是建構函式 一般列印大寫的就是建構函式,所以用new 得到一個promise例項

promise是為了解決**地獄問題的。**地獄就是ajax一層套一層 特別多

then方法是在promise建構函式的prototype屬性上,所以說,只要是promise建立的實力,都可以訪問到then方法

promise表示一個非同步操作,每當我們new一個promise例項,這個例項就表示一個具體的非同步操作

既然他是非同步操作,所以非同步操作結果只能有兩種狀態 成功和失敗

非同步操作無法使用return把結果返回給呼叫者,只能使用**函式的形式,將結果返回給呼叫者

應用場景:

我們有一個a方法ajax方法獲得使用者資訊,我們還有一個b方法是馬上要使用使用者資訊,當兩個方法同時呼叫時候,我們無法判別b方法已經拿到a方法的ajax獲取的使用者資訊,基於這樣的需求,我們急需一個能讓他們按照a->b的順序同步執行的東西。

解決辦法:

es6的promise物件是可以實現同步操作的,這解決了ajax請求想同步按照順序執行的問題。

在後面每個then的時候,我們需要返回promise物件才可以一直then呼叫,我們可以直接

return

new promise(response =>)

});

也可以使用promise提供的方法

return promise.resolve();
使用return new promise方式無限呼叫then:

new promise((resolve, reject) =>);

}).then((result) =>)

}, 1000

) })

}).then((result) =>)

}, 1000

) })

}).then((result) =>)

}, 1000

) })

}).then((result) =>,

1000

) })

})

除了上面的方式,還可以使用promise.all方法來實現:

var p1 = new promise((resolve, reject) =>)

var p2 = new promise((resolve, reject) =>,

1000

); })

var p3 = new promise((resolve, reject) =>,

1000

); })

promise.all([p1, p2, p3]).then((result) =>)

var p1 = new

promise((resolve, reject) => )

var p2 = new

promise((resolve, reject) => , 1000);

})var p3 = new

promise((resolve, reject) => , 1000);

})promise.all([p1, p2, p3]).then((result) => )

ES6 Promise的使用

一 介紹 promise 承諾 相當於一個容器,儲存著未來才會結束的事件 非同步操作 的一個結果 各種非同步操作都可以用同樣的方法進行處理,比如axios 二 特點 1 物件的狀態不受外界影響,處理非同步操作時有三個狀態 pending進行中 resolved已完成 rejected失敗 2 一旦狀態改變...

ES6中async與await的使用方法

是非同步程式設計的一種解決方案。從語法上說,promise 是一個物件,從它可以獲取非同步操作的訊息。解決 函式巢狀過多的情況 const promise new promise function resolve reject 3000 promise then res catch err console ...

ES6的Promise物件

請求a 開始 ajax 請求c 結束 請求b 結束 請求a 結束 上面的案例,假設請求c需要依賴請求b返回的資料,所以,c只能放在b的suc...