Promise:then 與 catch
這些程式碼片段是否相等?換句話說,它們在任何情況下、對於任何處理函式,是否都會以相同的方式運作?
promise.then(f1).catch(f2);
相較於
promise.then(f1, f2);
簡短的回答是:不,它們不相等
差異在於,如果 f1
發生錯誤,則會在此處由 .catch
處理
promise
.then(f1)
.catch(f2);
…但在此處不會
promise
.then(f1, f2);
這是因為錯誤會沿著串接傳遞,而在第二個程式碼片段中,f1
下方沒有串接。
換句話說,.then
將結果/錯誤傳遞給下一個 .then/catch
。因此在第一個範例中,下方有一個 catch
,而在第二個範例中沒有,因此錯誤未處理。