Sequelize JS / Bluebird:从异步并行数据库调用开始

时间:2014-10-01 17:38:38

标签: node.js bluebird sequelize.js

我有一个问题。

我想启动2个db调用,然后继续使用promise链。

我做的一个相当狡猾的方式是开始这样的承诺:

db.Model.find().then(function() { 
    return [ 
        firstcall, 
        secondcall
    ]
}).spread(function(resultFromFirstCall, resultFromSecondCall) {
    //do something once both calls completed
});

使用空的db调用启动promise链是否可以?或者有更好的方法。

我知道我可以引入异步库但是我认为这是一种更干净的方法,如果对空的db.Model.find()调用没有性能影响。

2 个答案:

答案 0 :(得分:4)

由于我从未使用过SequelizeJS,所以我不确定这里会有空find调用,但是我很确定你所寻找的是Promise.join

Promise.join( firstCall, secondCall, function( firstResult, secondResult ) {
  // Whatever
});

答案 1 :(得分:-1)

过了一段时间,我发现了一种更好的方法。

Promise.resolve().then(function() {
    return [
        firstCall(),
        secondCall()
    ];
}).spread(function(resultFromFirst, resultFromSecond) {
    //do something with resultFromFirst and resultFromSecond
});