[英]When yield array with Promise.reject, I got success response
我正在從這里追蹤承諾產生者
請遵循以下代碼
function async(makeGenerator){
return function () {
var generator = makeGenerator.apply(this, arguments);
function handle(result){
// result => { done: [Boolean], value: [Object] }
if (result.done) return Promise.resolve(result.value);
return Promise.resolve(result.value).then(function (res){
return handle(generator.next(res));
}, function (err){
return handle(generator.throw(err));
});
}
try {
return handle(generator.next());
} catch (ex) {
return Promise.reject(ex);
}
}
}
async(function*(){
yield [Promise.reject('Promise error')]
})()
.then(function(){
console.log('success')
})
.catch(function(data){
console.log('error',data)
})
它的輸出是success
,而不是error
如果我確實yield Promise.reject('Promise error')
.catch
預期方式調用.catch
。
我需要做的是,我可以抓住Promise拒絕
yield [Promise.reject('Promise error')]
感謝@loganfsmyth
我們可以從修改代碼
yield [Promise.reject('Promise error')]
至
yield Promise.all([Promise.reject('Promise error')]);
會給出預期的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.