回调已经被称为 - >异步瀑布javascript代码

时间:2016-06-19 15:13:45

标签: javascript node.js ecmascript-6 node-async

我有以下代码。我得到“回调在”addToMongo.push(...)之后已经被称为错误。对我来说这没有多大意义,因为它应该只执行一次。

主要代码:

async.waterfall([
    (callback) => {
      sql.query("SELECT id FROM ....", (err, rows, fields) => {
        err ? callback(err, []) : callback(null, rows);
      });
    },
    (rows, callback) => {
        /*Begin for-loop*/
        for (var i = 0; i < rows.length; i++) {
            let id = rows[i].id;

            async.waterfall([
              (callb) => {
                 console.log("doing getvalues");
                 getValues.push(id, (err, values) => {
                    err ? callb(err, []) : callb(null, values);
                 });
              },
              (values, callb) => {
                 console.log("doing addtomongo");
                 addToMongo.push(values, (err, res) => {
                    err ? callb(err, []) : callb(null, res);
                 });
              }
              ],
              (err, res) => {
                 err ? callback(err) : console.log("res");
              });
          }  /*End for-loop*/
     }

    ], (err, result) => {
     err ? console.trace(err) : "";
   });
});

这两个函数(getvalues和addToMongo)

var getValues = async.queue((id, callback) => {
  let q = query;
  sql.query(q, (err, rows, fields) => {
   err ? callback(err, []) : callback(null, rows);;
  });
}, 5);

var addToMongo = async.queue((values, callback) => {
  callback(null, "done");
}, 5);

0 个答案:

没有答案