[英]Javascript (node.js) Promise async/await issue
new Promise(async (resolve, reject) =>
{
try
{
await new Promise((resolveSec, rejectSec) =>
{
setTimeout(function()
{
resolveSec('')
}, 1000);
}).then(function(val)
{
return reject('should reject') //does not stop execution
//throw('should reject'); //stops execution
});
console.log('not here'); //should not get to here
}
catch (err)
{
console.log('caught error');
}
}).catch(function(err)
{
console.log(err);
});
有人可以解释为什么上面的代码没有在“拒绝”上结束执行,而是与“抛出”一起使用,因为我认为Promise中的“拒绝”和“抛出”都具有相同的功能。
原因throw
结束内部Promise的执行,然后由await
语句将其重新throw
,从而结束外部Promise的执行。 reject
然而将设置外承诺状态到拒绝 , return
将结束内诺功能的执行而不是外的一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.