gpt4 book ai didi

javascript - 在异步函数内提前返回

转载 作者:行者123 更新时间:2023-12-03 00:39:42 25 4
gpt4 key购买 nike

假设您必须调用异步函数的场景,但您对该函数的成功/失败情况并不真正感兴趣。在这种情况下,以下两种模式在调用堆栈、回调队列和事件循环方面的优缺点是什么

模式 1

async setSomething() {
try {
set(); // another async function
} catch (err) {
// log the error here
}
return true;
}

模式 2

async setSomething() {
try {
await set(); // another async function
} catch (err) {
// log the error here
}
return true;
}

最佳答案

模式 1 不会捕获 set 函数中异步操作期间可能发生的任何错误 - 任何错误都会导致未处理的 Promise 拒绝,这是应该避免的。模式 1 只会捕获 set同步 操作期间发生的错误(例如,在设置 fetch 请求时),而这些错误不会发生。大多数情况下都可能发生。

示例:

// open your browser's console to see the uncaught rejection

const set = () => new Promise((_, reject) => setTimeout(reject, 500));
async function setSomething() {
try {
set(); // another async function
} catch (err) {
console.log('err');
}
return true;
}

setSomething();

因此,模式 2 可能更可取。如果您不关心异步调用的结果,则在调用 setSomething() 时不要 await 或调用 .then .

或者,对于这么简单的事情,您可以考虑仅使用 Promise 方法,不需要 async 函数:

const setSomething = () => set()
.catch((err) => {
// log the error here
});

关于javascript - 在异步函数内提前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53512433/

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