2014-10-01 39 views
1

我有一個問題。Sequelize JS/Bluebird:從異步並行數據庫調用開始

我想開始2分貝的電話,然後繼續承諾鏈。

一個相當hackish的方式我這樣做是這樣開始的承諾:

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

它是正常的,開始一個空數據庫調用的諾言鏈?或者,還有更好的方法。

我知道我可以引入該異步庫,但我認爲這是一種更清潔的方法,如果沒有性能影響來調用空的db.Model.find()。

回答

-1

是經過一段時間,我發現了一個更好的方法來做到這一點。

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

解釋downvote。 – Calvintwr 2015-03-13 14:06:21

4

我不知道,因爲我從來沒有使用SequelizeJS空find調用將在這裏做什麼,但我敢肯定,你要找什麼可能Promise.join

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

好的謝謝你! – Calvintwr 2014-10-02 13:48:30