講解promise任務鏈之前先看乙個例子
new promise( (resolve, reject) => ).then(
() => ,
() =>
).then(
() => ,
() =>
);
猜猜控制台會列印什麼東西呢,正確答案是
'reject', 2
'resolve', 3
想知道為什麼,繼續往下看
promise chainthen函式執行後會返回乙個新的promise物件如果then沒有傳入處理函式,那麼會返回乙個繼承了上乙個處理狀態的 promise 物件
new promise( (resolve, reject) => ).then().then(() => ,() => )
上面**會列印2。
如果then傳入處理函式,那麼預設返回乙個 fulfilled/resolved 狀態的 promise 物件
new promise( (resolve, reject) => ).then(() => ,() => ).then(() => ,() => )
上面**會列印2,3
如果then傳入了處理函式,通過處理函式顯示的return了乙個新的 promise,那麼返回這個顯示的 promise 物件
new promise( (resolve, reject) => ).then(() => ,() => )
}).then(() => ,() => )
上面**會列印2,4。
到這裡一開始的問題就清楚了。但是,還會導致乙個問題
問題:不易中途終止後續任務執行看下面乙個例子就知道了
列印結果為
上面當他不是管理員的時候,我們根本就不想讓他拿到資源,甚至都不想發這個請求,那怎麼辦呢?
.catch方法處理 rejected 的情況,與 then 的第二個引數 onrejected 相同
返回乙個 promise 物件,狀態預設為 fulfilled/resolved
可以捕獲 catch 之前的 promise chain 中的任一錯誤(如果 promise chain 中的 then 沒有處理的話)
Promise 非同步程式設計
promise 是非同步程式設計的解決方案,他代表承諾,便是一定會丟擲兩種狀態,狀態一經確定就不會改變 編譯成功 resolve value 為 必選 編譯失敗 reject error 可選 使用then 接收正確的丟擲 then 後面接 catch function error 可以簡寫為fun...
Promise非同步程式設計
當我們用 ajax去請求有依賴的多個資料的時候,編寫會形成漏斗形狀的結構,可讀性差,可以使用es6提供的promise promise概述 promise是非同步程式設計的一種解決方案,從語法上講,promise是乙個物件,從它可以獲得非同步操作的訊息 使用promise有以下好處 可以避免多層非同...
Promise非同步程式設計
例項化promise物件,建構函式中傳遞函式,該函式中用於處理非同步任務 resolve和reject兩個引數用於處理成功和失敗兩種情況,並通過p.then獲取處理結果 在呼叫then時可以只傳入正常情況函式處理,不傳入異常情況函式,即只處理成功情況 我們使用new來構建乙個promise prom...