【发布时间】:2018-06-04 17:05:18
【问题描述】:
我已经使用 Promises 很长时间了,它们始终是我用来控制程序工作流程的“东西”。示例:
Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
.catch(handleError)
现在,我想更改为 try-catch 样式,但我不知道究竟什么是正确的方法。
V1:
try {
var body = await Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
} catch (error) {
callback(error)
}
callback(null, {
statusCode: 200,
body
})
V2:
try {
var body = await Promise
.resolve(obj)
.then(doSomething1)
.then(doSomething2)
.then(body => {
callback(null, {
statusCode: 200,
body
})
})
} catch (error) {
callback(error)
}
什么是正确的方法?
【问题讨论】:
-
我认为在这种情况下没有正确的方法。这取决于什么是最可维护的。
-
有点基于意见的问题,但我更喜欢 V1。最好让
callback调用彼此靠近,而不是一个在.then中,另一个在catch块中。但我最喜欢的 sn-p 实际上是第一个只使用 Promise 的。 -
我不明白您为什么要首先更改为
try? -
在任何情况下,您都不会调用回调,而是将resolve返回一个返回的promise。
-
您的 V1 不工作。如果出现错误,
callback会被调用两次。
标签: javascript node.js asynchronous promise async-await