gpt4 book ai didi

javascript - 使用 Promise.catch() 和在 try...catch 中包装 Promise 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 18:46:44 24 4
gpt4 key购买 nike

今天我正在听一节 Javascript 课,他们讲了一些我以前没见过而且我不完全理解的东西。我会尽量从内存中重现

老师没有使用 Promise 的 catch 来处理错误,我已经习惯了,而是使用 try...catch 包裹了 Promise 及其然后。当我问他为什么这样做时,他说这是为了“同步”捕获错误。也就是说,而不是我习惯的以下格式(我使用的是伪代码)

someLibrary.someFunctionThatReturnsAPromise
.then(() => something)
.then(() => somethingElse)
.catch(err => reportError)

他是这样做的

try {
someLibrary.someFunctionThatReturnsAPromise
.then(() => something)
.then(() => somethingElse)
}
catch(err) {
reportError
}

这两种捕获错误的方法有什么区别?包装异步的 Promise 如何以同步方式报告错误?

感谢您的任何见解!

最佳答案

try-catch不会捕获 <somePromise>.then 附近的异步错误因为正如您所注意到的,该 block 将在 promise 完成/可能抛出之前退出。

但是,如果您使用的是 async/await然后是 try-catch将捕获,因为该 block 将等待 await :

async function foobar() {
try {
await doSomePromise();
} catch (e) {
console.log(e);
}
}

关于javascript - 使用 Promise.catch() 和在 try...catch 中包装 Promise 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232517/

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