1
我正在寫一個簡單的服務器在NodeJS中,而不使用除數據庫連接之外的任何框架。我有這個代碼來填充數據庫:這是一個控制NodeJS異步的好方法嗎?
module.exports = function(callback) {
var model = require('./model');
var seedData = [
// Some seed objects
];
var count = 0;
for(var i = 0; i < seedData.length; i++) {
model.Complaint.createComplaint(seedData[i], function(err, id) {
count++;
if (count === seedData.length) {
callback();
}
});
}
};
在這裏我檢查每個回調,如果其他回調已被執行。如果count
是seedData
數組的長度,我稱主回調。管理調用異步方法的循環是否是一種好方法?
這是一個很好的方法來做到這一點([示例](http://stackoverflow.com/a/30683157/5388620)),但你應該看看承諾。你寫了'model.Complaint.createComplaint()'? – Shanoor
如果'seedData.length'很大,那麼你的數據庫可能會插入數據,因爲它們是同時啓動的。另外,如果一個函數調用失敗,其他函數仍然會被執行而不是提前提供。 – robertklep