如何链接JavaScript的承诺和错误

科菲弗斯

认为:

function f() {
  return p1()
    .then(function(p1res) {
       console.log('p1 ok');
       return Promise.resolve(p1res);
    }, function(err) {
       console.log('p1 err '+err);
       return Promise.reject(err);

    }).then( ... proceed

是陈述

return Promise.resolve(p1res);

return Promise.reject(err);

需要吗?

用户名

是报表return Promise.resolve(p1res);return Promise.reject(err);需要?

是的,如果您计划then从这些处理程序中链接其他处理程序,因此需要保留(“传递”)承诺的价值和状态,则需要此方法或等效方法但是,即使您要这样做:

  1. 取而代之的是,return Promise.resolve(p1res);它变得更加简单和等效return p1res;

  2. 与其说return Promise.reject(err);是简单易懂,还不如说是throw err;,继续使用“原因”在错误路径上继续承诺err

但是,如果您的目标只是拥有一个处理程序来记录状态,则无需(也可能不想)从那里链接后续处理程序,因为这将使您费时费力才能确保状态报告处理程序返回值或重新抛出错误,以利于下游处理程序。相反,您可以将状态报告处理程序放在单独的“分支”上,而不用担心它们返回或传递的内容:

function f() {
  let result = p1();

  result . then(
      function(p1res) { console.log('p1 ok'); }, 
      function(err)   { console.log('p1 err ', err); });

  result . then(
    ...proceed

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何捕获承诺运行时Javascript错误?

来自分类Dev

链接承诺(.animate和setTimeout之间的差异)

来自分类Dev

JavaScript承诺和竞争条件

来自分类Dev

链接包含嵌套AJAX调用的JavaScript承诺

来自分类Dev

有角度的承诺和错误

来自分类Dev

了解JavaScript承诺;堆栈和链接

来自分类Dev

如何链接多个承诺?

来自分类Dev

Javascript承诺中的动态链接

来自分类Dev

您如何有选择地处理JavaScript承诺中的错误?

来自分类Dev

JavaScript承诺和setTimeout

来自分类Dev

拒绝Javascript承诺和错误处理

来自分类Dev

本机Javascript中的链接承诺

来自分类Dev

如何捕获承诺运行时Javascript错误?

来自分类Dev

Q承诺传播错误和异常

来自分类Dev

如何从JavaScript函数返回承诺?

来自分类Dev

如何链接承诺?—需要澄清

来自分类Dev

Javascript原型链接和委派如何工作?

来自分类Dev

expressJS承诺和错误处理

来自分类Dev

本机Javascript中的链接承诺

来自分类Dev

错误处理参数和JavaScript承诺中的catch之间的区别

来自分类Dev

如何 .then 链接但需要之前承诺的 resolve() 值 - javascript?

来自分类Dev

Angular 和 RXJS 承诺中的错误

来自分类Dev

错误错误:未捕获(承诺):无效链接:SosPopPage

来自分类Dev

如何按照线性流程链接承诺?

来自分类Dev

Javascript 承诺,返回的 then 和 catch 方法的承诺

来自分类Dev

如何链接承诺和多个异步请求?

来自分类Dev

如何链接承诺

来自分类Dev

Javascript 使用 async/await 传递/链接承诺

来自分类Dev

JS 承诺:如何链接 `then` 调用?