node.js - 这是在 NodeJS 中控制异步的好方法吗?

标签 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 数组的长度,我将调用主回调。这是管理调用异步方法的循环的好方法吗?

最佳答案

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

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

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

关于node.js - 这是在 NodeJS 中控制异步的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34499162/

相关文章:

javascript - 使用 sequelize 获取下一条记录

javascript - 如何在请求之外以 express 方式访问 session ?

node.js - Passport session 适用于 Postman,但不适用于浏览器

javascript - 如何在js中转换日期格式?

javascript - 在 `fetch()` 上使用流有什么优势?

javascript - 如何从 Node.js 中的请求方法内填充的数组访问数据?

javascript - MJML:mj-include 无法读取文件

node.js - sequelize index 选项运行两次并导致测试失败

angularjs - 如何使主键/_id在 Mongoose 中可选输入

ajax - 如何通过 NodeJS 向端点发出 Ajax 请求