gpt4 book ai didi

javascript - Node.js等待捕获不返回

转载 作者:行者123 更新时间:2023-12-01 15:55:57 25 4
gpt4 key购买 nike

我正忙于处理一些以意想不到的方式响应的代码(对我来说)。它涉及处理 Node.js promise 异常。

我修改了以下功能,因此它所做的一切都失败了

function asynFunc() {
return new Promise(function(res, rej) {

rej("GENERIC ERROR");

});
}

当我尝试调用它并处理此错误时,问题就出现了。如果我执行以下操作,它将按预期工作,该函数将失败并执行返回的 catch,停止执行最后一个控制台日志
async function appStart() {

try {
await asyncFunc();
} catch(log) {
console.log(log);
return;
}

console.log("YOU SHOULD NOT SEE THIS");

}

appStart();

如果我按如下方式编写函数,它似乎没有返回,它仍然执行最后一个控制台日志,无论等待如何
async function appStart() {

await asyncFunc().catch(function(log) {
console.log(log);
return;
});

console.log("YOU SHOULD NOT SEE THIS");

}

如果这是我认为它正在做的事情,那么返回是从 catch 内部的函数而不是 appStart 函数本身返回的,或者我完全错了,在这种情况下我不知道它为什么不返回。

有没有办法使用第二个 catch 方法并且仍然让它从调用函数返回?

最佳答案

在第二个示例中,您不是从 catch 中的外部函数返回,而是从 catch 回调中返回:

await asyncFunc().catch(function(log) {
console.log(log);// ^
return; // | returns from that function
});

这具有捕获错误并继续并返回解析为未定义的新 promise 的效果。无法从回调内部控制外部函数的返回。您需要从外部函数测试异步操作的结果,这会给您留下 try/catch或在 promise 解决后显式测试结果。

关于javascript - Node.js等待捕获不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com