【发布时间】:2018-12-10 14:22:45
【问题描述】:
我正在编写一个 node.js 函数,它根据条件返回不同的承诺,即 cod:
if(condition){
return promise.then(() => {
return Promise.resolve(value)
})
}else{
return anotherPromise
}
现在的问题是,如果条件为真,我需要在承诺完成后做一些事情,但在另一种情况下,我只是返回承诺,所以eslint 告诉我嵌套承诺是一种不好的做法.所以这段代码对我不起作用:
(() => {
if(condition){
return promise
}
}else{
return anotherPromise
}
}).then(() => {
return Promise.resolve(value)
})
因为使用此代码,then 回调将在两种情况下执行。
处理这种情况的最佳做法是什么?
【问题讨论】:
-
可以切换到
async/await吗? -
上面的
Promise.resolve(value)真的是代码的一部分还是只是其他逻辑的占位符?如果它是代码的一部分,那你为什么不直接返回value呢?实际上不需要包装这个。 -
只需编写您需要的任何 js 并将其编译为您的目标所需的任何内容,如果您想使用 typescript,您可以使用任何 javascript 编译器或只使用 typescript 编译器。正如@Sirko 所提到的,async await 作为一种选择可能是最好和最舒适的解决方案。
-
@AmeerTaweel babeljs.io 。如果你想玩一些预设(你需要添加 ES2017 预设),去这里:es6console.com。只需编写您的代码,点击转换并检查它是如何转换的。
标签: javascript node.js promise