【问题标题】:NodeJS - For loop - Wait for a callback to continueNodeJS - For循环 - 等待回调继续
【发布时间】:2015-05-31 04:19:31
【问题描述】:

我正在尝试查询,foreach id 在一个数组中,来自 MySQL 数据库的一些数据。 我的 for 循环如下所示

for(var i = 0; i < res.length; i++) {
    var steamid = res[i].steamid;
    db.query('SELECT `name` FROM `users` WHERE `steamid`=?', [steamid], function(err, rows) {
        var player = {name: rows[i].name};
        team.push(player);
    });
}

但问题是,for 循环在查询完成之前继续,然后 var i 已经增加了一两个。

有没有办法检查查询是否完成?

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

    只需使用 closure 以便您的 i 引用正确的索引。

    function finished(){...}//called when you fetched all your data
    var nbDone = 0;
    res.forEach(function(elem, i){
        var steamid = elem.steamid;
        db.query('SELECT `name` FROM `users` WHERE `steamid`=?', [steamid], function(err, rows) {
            var player = {name: rows[i].name};
            team.push(player);
            nbDone++;
            if(nbDone == res.length){
              finished();//you know all of your queries have completed
            }
        });
    });
    

    您可能需要查看 Promise 或 async 以处理您的异步流程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2019-05-22
      • 2015-09-10
      • 2020-07-14
      • 1970-01-01
      相关资源
      最近更新 更多