Promise包装在catch子句中,并在Promise.all中等待


promise的文档说明.catch()返回promise。这是否意味着,如果您在代码中返回一个promise,它将被另一个来自.catch的promise包裹

const x = Promise.reject().catch(() => Promise.resolve("test"));

将以";测试";被另一个来自catch的承诺所包裹?据我所知,这就是异步函数中发生的情况;他们把结果包装在承诺的一边&";在引擎盖下";。这可能会导致双重承诺,这也发生在这里吗?

  1. 如果上面变量x中的promise被放入现有数组并传递给Promise.all(),那么什么将被解析?catch块和内部函数必须在Promise.all解析之前完成吗?如果是,为什么会出现这种情况?为什么Promise.all不会在执行第一个Promise.rejectt((时立即解决?它怎么会知道等待
  1. 是和否。。。涉及多个承诺,但它们是连锁的,不是相互包裹的,也不是最终的承诺"采用";(实际短语是"采用"(在您的情况下是Promise.resolve("test")的值,因此,您得到的是一个单独的承诺,它将(在本例中,解析(为值"test"
  2. 5个答案是:
  • 是的,它被解决了
  • 是的,因为x是该表达式返回的最后一个promise
  • 因为x是该表达式返回的最后一个promise,所以其他promise都不是"x";可见";致承诺
  • 因为x是该表达式返回的最终promise,所以其他promise不是"x";可见";到x
  • 这就是承诺链的工作方式,没有等待,只是承诺链在工作

您可能会发现承诺解决程序-2.3.2有助于理解承诺的内部工作原理-2.3.2专门处理在.then中返回承诺。。。决议程序的其余部分也很有启发性。

相关内容

  • 没有找到相关文章

最新更新