这是在NodeJS中控制Async的好方法吗?

时间:2015-12-28 19:02:32

标签: node.js

我在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();
            }
        });
    }
};

这里我检查每个回调是否已经执行了其他回调。如果countseedData数组的长度,我会调用主回调。这是管理调用异步方法的循环的好方法吗?

1 个答案:

答案 0 :(得分:0)

正如ShanShan在评论中已经提到的,Promises在你需要使用大量异步函数时非常强大。如果您只是想简化当前脚本,Async.js可能对您有用。它允许您将循环重写为:

async.each(seedData, model.Complaint.createComplaint, callback);

并提供了许多其他方法,可以让您更好地控制流程(例如以串行或并行方式运行函数)。