是否可以使用许多函数(超过10个)来处理Node的异步性质(特别是在添加到MySql数据库时)

时间:2013-06-24 18:39:32

标签: node.js asynchronous node-mysql

当我接到API调用时,我必须安装到大约4,5个表,因为一个条目有子项,而子项又有子项。由于我必须将数据从第一个插入数据传递到第二个插入数据(使用父ID),我最终会有太多的函数(如函数insertTable1,insertTable1Kids,insertTable1KidsKids)等等。

这是好设计吗?我正在使用这么多功能让我感到困扰。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用闭包和async模块。

npm install async

您的代码看起来像这样......

var async = require('async');

exports.your_route = function(req, res) {
  var parent_id = req.query.parent_id;
  var calls = [];
  calls.push(function(callback) {
    // insertTable1 - use parent_id
    callback(false);
  });
  calls.push(function(callback) {
    // insertTable1Kids - use parent_id
    callback(false);
  });
  calls.push(function(callback) {
    // insertTable1KidsKids - use parent_id
    callback(false);
  });
  calls.push(function(callback) {
    // return response
    res.send("tabels for parent ID: "+parent_id+" created);
    callback(false);
  });
  async.series(calls);
};