【发布时间】:2020-05-27 06:58:39
【问题描述】:
我在互联网上寻找答案,但我无法真正找到我想要的东西。
我需要知道以下代码有什么问题(前提是我们应该避免混淆回调和承诺)-
function a(callback){
(async ()=>{
try{
let result = await doSomething();
callback(null, result);
} catch(e){
log('error at await');
callback(e, null);
}
})()
}
如果我在代码中使用上述模式可以吗?
【问题讨论】:
-
不推荐。在混合回调和承诺时,通常更难以进行正确的错误处理。此外,控制流可能是一团糟。这个例子并不算太混乱,因为只有一个异步操作,但为什么不直接返回一个 Promise 并加入现代异步设计时代并完全跳过使用任何普通回调呢?此外,这里的
await毫无意义。您刚刚使事情变得比return doSomething()复杂得多,并让调用者使用返回的承诺。 -
它的问题在于它的方式比需要的复杂得多。一个简单的
return doSomething()并让调用者使用返回的承诺替换所有这些。 -
我明白你的意思。非常感激。 @jfriend00
标签: node.js async-await callback