假设我有一个具有异步方法的对象数组:
[
{
partOne: function(input) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
},
{
partOne: function(resultOfPrevious) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
},
{
partOne: function(resultOfPrevious) {
// Do something async
},
partTwo: function(result) {
// Do something w/ result of partOne
}
}
]
我想用我的输入执行第一个对象的partOne,将结果(异步)传递给partTwo回调,然后将partTwo的结果作为输入传递给下一个对象的partOne,依此类推。该数组可以是一个或多个对象。我想知道执行此类代码的最佳模式是什么?
有点类似于async.js的 waterfall 方法:https://caolan.github.io/async/docs.html#waterfall ,但我想知道如何在没有库的情况下使用更清晰的代码来做到这一点?
不确定 async/await 是否有帮助?
最佳答案
使用async/await
的另一种选项,无需收集对数组的每个回调:
async function processWaterfallObject (data, input) {
let result = input
for (let entry of data) {
result = await entry.partOne(result)
result = await entry.partTwo(result)
}
return result
}
这假设 data
数组中的函数是 async
或返回 Promise
。
async/await
自 7.6.0
起可在 node
中使用。
关于javascript - 从对象创建异步 waterfall ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46582728/