當我的Promise定義中的某個異步調用引發錯誤時,我似乎無法將其傳播給我的catch處理程序。在JavaScript Promise中引發異步失敗
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('about to fail!');
throw new Error('async FAIL');
}, 1000)
throw new Error('synchronous fail!');
}).catch(function(err) {
console.log('catch1!!!');
throw err;
});
promise.catch(function(err) {
console.log('CAUGHT!');
console.log(err.stack);
});
此代碼有效捕獲同步故障。但是,有沒有什麼方法可以在Promise rubric中捕捉異步故障?我是否缺少一些關於如何使用承諾的基礎知識?
你爲什麼不使用拒絕? – Saar
好吧,這個想法是,其他一些電話會導致失敗(不是我明確的投擲)。所以,我真的不想把整個街區都封閉起來,試圖解決任何可能出錯的電話...... –
你不能那樣做。 「但是,有什麼方法可以在Promise rubric內找到異步失敗?」 ---不,它不會從那裏彈出,因爲它不屬於當前的調用堆棧。 – zerkms