0

我有一组必须按顺序读取的命令。任何失败,处理停止。

readCommands 是一组读取函数...

async.waterfall(readCommands, function(err) {
    if (err) {
        console.log(err);
        res.send(500, { error : err.toString() });
        return;
    }
    else {
        console.log('we determined the state to which we have to rollback to');
    }
});

在这一点上,我知道我是从什么开始的。现在我想做写命令

async.waterfall(writeCommands, function(err) {
    if (err) {
        console.log(err);
        res.send(500, { error : err.toString() });
        return;
    }
    else {
        console.log('we succeeded with all the write commands...');
    }
});

数组 readCommands 和 writeCommands 条目完全不同,因此很难将它们组合起来。但我会在去下一个瀑布之前完成第一个瀑布。如何从现有的两个中制作“瀑布”?

4

2 回答 2

2

听起来很疯狂,但您实际上可以嵌套这些异步方法:

async.series([
  function (done) {
    async.waterfall(readCommands, done);
  },
  function (done) {
    async.waterfall(writeCommands, done);
  }
], function (err) {
  // All done
});
于 2013-12-18T00:57:26.770 回答
2

只需组合您的两个数组,它们将按顺序运行:

async.waterfall(readCommands.concat(writeCommands), function(err) {...}
于 2013-12-18T02:07:43.540 回答