0
我在理解Javascript承諾方面遇到了一些麻煩,特別是鏈接它們並將錯誤傳遞給鏈。在下面的代碼:如何正確鏈接Javascript中的承諾,並解決錯誤處理?
function myPromise() {
return new Promise((resolve, reject) => {
setTimeout(function() {
console.log('done')
reject('resolved');
}, 1000);
});
}
function myOtherPromise() {
return new Promise((resolve, reject) => {
myPromise().then(done => {
resolve(done);
}).catch(e => {
console.log('In myOtherPromise, caught err: ', e);
reject(e)
});
});
}
myOtherPromise().then(done => {
console.log('done calling myOtherPromise: ', done);
}).catch(e => {
console.log('caught err from myOtherPromise', err);
});
輸出顯示:
done
In myOtherPromise, caught err: resolved
我不明白爲什麼下面不打印:
'caught err from myOtherPromise'
我覺得有一些基本的東西我我沒有得到。爲什麼myOtherPromise
的拒收不會通過最後的catch
區塊?
因爲函數拋出試圖調用的console.log()'的ReferenceError當錯誤:錯誤是不是defined';) – Thomas
避免['Promise'構造反模式(http://stackoverflow.com/q/23803743/1048572)! – Bergi