gpt4 book ai didi

javascript - 当使用 Promise.reject 生成数组时,我得到了成功响应

转载 作者:行者123 更新时间:2023-12-03 06:54:30 26 4
gpt4 key购买 nike

我正在关注 here 的 promise 生成器

请按照以下代码操作

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)
})

它的输出是成功,而不是错误

如果我执行yield Promise.reject('Promise error'),那么.catch就会按预期被调用。

我需要做什么,这样我才能捕获 Promise 拒绝

yield [Promise.reject('Promise error')]

最佳答案

感谢@loganfsmyth

我们可以修改代码

yield [Promise.reject('Promise error')]

yield Promise.all([Promise.reject('Promise error')]);

将给出预期的结果。

关于javascript - 当使用 Promise.reject 生成数组时,我得到了成功响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com