【发布时间】:2023-04-02 19:15:01
【问题描述】:
我有以下代码块:
new Promise((res, rej) => {
if (checkCondition()) {
res(getValue())
} else {
getValueAsync((result) => {
res(result)
})
}
}).then((value) => {
doStuff(value)
})
我想使用 async 库,这是代码库的其余部分使用的。我试图找出哪个功能最能解决这个问题。我只能想出一个解决方案,但似乎有点笨拙:
async.tryEach([
(cb) => {
if (checkCondition()) {
cb (null, getValue())
} else {
cb (1)
}
},
(cb) => {
if (!checkCondition()) {
getValueAsync((result) => {
cb(null, result)
})
} else {
cb (1)
}
}],
(err, value) => {
doStuff(value)
}
)
就像我说的,这感觉很笨重。很高兴它异步运行检查,我很确定它总能得到正确的结果,但代码块现在更大更混乱。
我在这里的唯一目的是使用与代码库的其余部分相同的库和技术,它们根本不使用 Promise。我无法在任何地方找到类似的控制流块,这就是我需要自己构建它的原因。如果我坚持承诺,那就这样吧,但我想使用该库找到解决方案。
【问题讨论】:
-
我不熟悉那个库,但我可以建议 node 8 async/await 吗?看起来它比您的代码示例要干净得多。
-
See my previous question。另外,我后来发现该服务正在运行 node6,所以
async/await不是一个开始的选项
标签: javascript node.js asynchronous