繁体   English   中英

Javascript(node.js)Promise异步/等待问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM