前言

在寫 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(處理中)三種狀態,接下來就看看介紹吧!

Promise 提供了什麼?

主要提供了 .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

【Javascript】你知道你常用的 Promise 嗎?
2.60 GEEK