然后一个 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/