最佳答案
我有困难理解之间的区别,把 .catch
之前和之后,然后在一个嵌套的承诺。
选择一:
test1Async(10).then((res) => {
return test2Async(22)
.then((res) => {
return test3Async(100);
}).catch((err) => {
throw "ERROR AFTER THEN";
});
}).then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
});
备选方案2:
test1Async(10).then((res) => {
return test2Async(22)
.catch((err) => {
throw "ERROR BEFORE THEN";
})
.then((res) => {
return test3Async(100);
});
}).then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
});
每个函数的行为如下: 如果数字是 <0
,test1失败; 如果数字是 > 10
,test2失败; 如果数字不是 100
,test3失败。在这种情况下,test2只是失败了。
我尝试运行 test2Async 并使其失败,然后在 BEFORE 和 AFTER 之后都以相同的方式执行,而这并不是在执行 test3Async。有人能给我解释一下在不同的地方放渔获物的主要区别吗?
在每个函数 I console.log('Running test X')
,以检查它是否得到执行。
出现这个问题是因为我之前发布的 如何将嵌套回调转换为承诺?帖子。我认为这是一个不同的问题,值得发布另一个主题。