我試圖讓下面的簡化代碼來完成,然後同步前進:的Node.js/Sails.js - 功能在forEach循環
factors.forEach(function(factor, index){
Factor.findOrCreate({function_name: factor}).exec(function(){
sails.log('success');
})
});
我該怎麼辦呢?
到目前爲止,我已經嘗試:在一個單獨的函數
- 把2-4行,並要求從 環
- 使用async.js async.series內()調用
雖然它會執行調用(print'success'),但它會很少在DB中找到或創建一個因子,所以它與異步特性有關代碼。
使用的承諾,等到所有findOrCreate()調用返回,然後繼續
var promises = []; factors.forEach(function(factor, index){ promises.push(Factor.findOrCreate({function_name: factor})); }); Q.all(promises).then(function(){ sails.log('success'); });
我已經試過這一個了幾個版本,但我仍然不能得到它打印'成功' - 這似乎是正確的做法,但我不確定有什麼不對。
您認爲「不經常工作」與查詢是並行處理而不是按順序處理有關嗎? – Bergi
這是我的假設,這就是爲什麼我想要嘗試async.series()和承諾。我所做的所有測試似乎都強化了這一概念。 – smileham