pcwu's TIL Notes


[JS] Promise Then-Catch-Throw 簡易筆記

Simple Use

如果要極簡單記錄最單純的使用方法的話:(catch, then and throw)

  1. 有回傳值的話,就會找到下一個 then

  2. throw 的話,就會找到下一個 catch

所以不論在哪裡,想要到下一個 then 的話,就 return,想要到下一個 catch 的話,就用 throw

當然中間被跳過的就回不去了,然後通常最尾巴會放一個 catch 收尾,以免有些 error 沒被抓到)

以下是規定,有時間再補上詳細解釋:

then必須回傳一個promise。 promise2 = promise1.then(onFulfilled, onRejected);

2.2.7.1 當不論是onFulfilled或onRejected其中有一個是有回傳值x,執行Promise解析程序[Resolve]

2.2.7.2 當不論是onFulfilled或onRejected其一丟出例外e,promise2必須用e作為理由而拒絕(rejected)

2.2.7.3 當onFulfilled不是一個函式,而且promise1是fulfilled(已實現)時,promise2必須使用與promise1同樣的值被fulfilled(實現)

2.2.7.4 當onRejected不是一個函式,而且promise1是rejected(已拒絕)時,promise2必須使用與promise1同樣的理由被rejected(拒絕)M

Reference & Reading