【发布时间】:2018-11-09 19:58:17
【问题描述】:
我今天正在听 Javascript 课,他们正在讲一些我以前没见过的东西,而且我不完全理解。我会尽量从记忆中重现
老师没有使用 Promise 的 catch 来处理错误,我已经习惯了,而是使用 try...catch 包裹 Promise 及其 thens。当我问他为什么这样做时,他说这是为了“同步”捕获错误。也就是说,而不是我习惯的以下格式(我使用的是伪代码)
someLibrary.someFunctionThatReturnsAPromise
.then(() => something)
.then(() => somethingElse)
.catch(err => reportError)
他这样做了
try {
someLibrary.someFunctionThatReturnsAPromise
.then(() => something)
.then(() => somethingElse)
}
catch(err) {
reportError
}
这两种捕获错误的方法有什么区别? 如何包装异步的 Promise 以同步方式报告错误?
感谢您的任何见解!
【问题讨论】:
-
第二个示例块只会捕获同步错误而不是异步错误。所以理论上,如果你不关心你的异步是否成功,只关心执行错误,它会是有效的。
try {} catch () {}可以用来catch,如果你正在使用async/await,有没有可能老师在演示?
标签: javascript try-catch es6-promise