使用 Promise


Promise 是一個表示非同步運算的最終完成或失敗的物件。由於多數人使用預建立的 Promise,這個導覽會先講解回傳 Promise 的使用方式,之後再介紹如何建立。

基本上,一個 Promise 是一個根據附加給他的 Callback 回傳的物件,以取代傳遞 Callback 到這個函數。

舉例來說,下方的範例若用舊方式應該會有兩個 Callback,並根據成功或失敗來決定使用哪個:

function successCallback(result) {
console.log(“It succeeded with ” + result);
}

function failureCallback(error) {
console.log(“It failed with ” + error);
}

doSomething(successCallback, failureCallback);
而新作法會回傳一個 Promise,這樣你就可以附加 Callback:

let promise = doSomething();
promise.then(successCallback, failureCallback);
再簡單點:

doSomething().then(successCallback, failureCallback);
我們稱之為 非同步函數呼叫。這個做法有許多好處,我們接下來看看。

保證
不如舊做法,一個 Promise 有這些保證:

Callback 不會在當次的迴圈運行結束前呼叫。
Callback 用 .then 添加,在非同步運算結束後呼叫,像前面那樣。
複 Callback 可以透過重複呼叫 .then 達成。
但 Promise 主要的立即好處是串連。

串連
有個常見的需求是依序呼叫兩個以上的非同步函數,我們稱之為建立 Promise 鏈。

開始討論

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *