javascript - 如何修复在前一个 promise 的 .then block 中处理的 .catch 中返回的停止 promise 。即 .catch 应该保留在 .catch 中

标签 javascript reactjs promise

然后一个 Promise 调用另一个 Promise,并且内部 Promise 从 catch .then block 中的外部 Promise 返回

我一般都在这里和谷歌上搜索过。 尝试使用简单的 try..catch。但不适用于调用 Promise

assignResolver(data)

      .then(function(resp) {
        console.log("map then");
        console.log(resp);
       })
      .catch(function(err) {
        console.log("map catch");
        console.log(err);
      });

export async function assignResolver(data) {
  csrf();

  return api
    .post("/api/task/assignResolver", data)
    .then(function(res){
      console.log("in api then block");
      return res.data;
    } )
    .catch(function(err) {
      console.log("in api then block");
      console.log(err);
  });
}

最佳答案

只要在内部 catch 内部再次抛出错误,它就会在外部 catch 中处理,而不是在外部 catch 中处理。外部.then:

export async function assignResolver(data) {
  csrf();

  return api
    .post("/api/task/assignResolver", data)
    .then(function(res){
      console.log("in api then block");
      return res.data;
    } )
    .catch(function(err) {
      console.log("in api then block");
      console.log(err);
      throw err;
  });
}

但是这样做有点奇怪 - 通常只在一个地方catch更有意义。例如,如果assignResolver确实需要在遇到错误时能够执行某些特定操作,并且您的外部调用者需要能够执行其他操作 em> 当遇到错误时,可以选择使用两个 catch,但在大多数情况下,只要可以处理错误,您就可以只使用一个 catch正确地。

在这里,除非 assignResolver 本身需要在遇到错误时执行某些操作,否则完全忽略它的 catch:

export async function assignResolver(data) {
  csrf();

  return api
    .post("/api/task/assignResolver", data)
    .then(function(res){
      console.log("in api then block");
      return res.data;
    })
}

关于javascript - 如何修复在前一个 promise 的 .then block 中处理的 .catch 中返回的停止 promise 。即 .catch 应该保留在 .catch 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728363/

相关文章:

javascript - 语义-ui-react语法错误: Adjacent JSX elements must be wrapped in an enclosing tag

javascript - 使用 .catch() 处理未处理的 Promise 拒绝

javascript - 使用 firebase 在快照 forEach 之后调用函数

javascript - NodeJS中的警报(无任何延迟)

javascript - 如何将禁用的元素值发送到服务器?

javascript - 将 React 类存储在 JS 变量中

android - 如何初始化 React Native 项目

javascript - JQuery promise : fail() called without waiting for promise to resolve

javascript - React - 如何重用/共享非全局列表

javascript - 将文件移动到 Next.js 中的 src/pages 文件夹时,自定义 _app 和 _document 会被忽略