在寫 Javascript 時一定會看到有套件或是範例有使用到 callback function,在過往的 coding 過程中最擔心的問題就是遇到 Callback Hell(也就是俗稱的波動拳),最常見的範例為:
doSomething(function(result) {
doSomethingElse(result, function(newResult) {
doThirdThing(newResult, function(finalResult) {
console.log('Got the final result: ' + finalResult);
}, failureCallback);
}, failureCallback);
}, failureCallback);
Sample from MDN
為了降低波動拳的出現機率,因此就就誕生了 Promise
來幫忙處理 Hell world 的問題,至於如何處理就透過接下來就說明並介紹用法。
Promise 是 Javascript 的非同步運算的物件
,並且包含 resolve
(成功)、reject
(失敗)、pending
(處理中)三種狀態,接下來就看看介紹吧!
主要提供了 .then()
以及 .catch()
方法讓使用者可以做 Promise Chain 去串聯方法,它的用意是讓之前的 Chain 在做完之後去執行接下來的事情,以 Axios 為例:
axios.get('https://www.example.com')
.then(function(result) {...})
.catch(function(error) {...})
可以在輪到 get()
執行後若成功則進去 .then()
,反之錯誤則 .catch()
,若只看這樣不清楚還是不懂,那來與以前的寫法比對:
function successCallback(result) {...}
function failureCallback(error) {...}
GetExampleCode(callExampleUrl, successCallback, failureCallback)
看完以前的的寫法,使用 Promise 邏輯是不是比較順暢且直覺呢?
看完範例後,接著看一下怎麼實作一個 Promise 吧!
#[object object] #javascript