promise的異常鏈

2021-07-15 04:43:31 字數 1198 閱讀 6091

var q = require("q");      //需要先用npm安裝node.js q模組

var retpromise = function

(issuc)

else

return deferred.promise;

};retpromise(false).then(function

(data)

).then(function

(data)

).then(function

(data)

, function

(error)

).then(function

(data)

,function

(error)

);

node執行上面的指令碼,結果如下:

fail, enter the first reject func

undefined, enter the fourth resolve func

以上結果說明:

1)乙個reject的promise物件會沿著其後的promise鏈尋找reject處理函式,直到找到為止,並呼叫該reject處理函式;

2)reject處理函式成功執行之後,如果繼續使用then方法,仍會按照正常的promise流程走下去,相當於返回了乙個resolve的promise物件

手動拋個異常,如下

retpromise(true).then(function

(data)

).then(function

(data)

).then(function

(data)

, function

(error)

).then(function

(data)

,function

(error)

);

node執行結果如下:

success, enter the first resolve func

error: success, but threw error, enter the first reject func

undefined, enter the fourth resolve func

手動丟擲異常,相當於返回乙個reject的promise,結果分析與上同

異常 異常鏈

1.常常會在捕獲乙個異常後再丟擲另外乙個異常,並且希望把原始資訊儲存下來,這被稱為異常鏈 2.在jdk1.4前,程式設計師必須自己編寫 來儲存原始異常資訊 3.現在所有throwable的子類子構造器都可以接受乙個cause物件作為引數,這個cause就是異常原由,代表著原始異常,即使在當前位置建立...

Promise統一異常處理

現在前端和後端的互動過程中,很多時候都使用fetch和promise。例如乙個簡化版本的從後台取得資料的方法如下 function getdata url else 然後在其他地方呼叫即可 getdata projects then data getdata users then data 但是上面...

非同步程式設計 Promise任務鏈

講解promise任務鏈之前先看乙個例子 new promise resolve,reject then then 猜猜控制台會列印什麼東西呢,正確答案是 reject 2 resolve 3 想知道為什麼,繼續往下看 promise chainthen函式執行後會返回乙個新的promise物件 如...