Javascript 回调节点js中的增量var

Javascript 回调节点js中的增量var,javascript,node.js,Javascript,Node.js,在这段代码中有可能增加var licznik吗? 我尝试过这样的事情,但总是得到0。有人能解释一下我做错了什么吗 rows.forEach(function(record) { var licznik = 0; var offer = manager.createOffer('76561198252553560'); inventory.forEach(function(item) { if(licznik <= recor

在这段代码中有可能增加var licznik吗? 我尝试过这样的事情,但总是得到0。有人能解释一下我做错了什么吗

rows.forEach(function(record) {
  var licznik = 0;
  var offer = manager.createOffer('76561198252553560');                       
  inventory.forEach(function(item) {
    if(licznik <= record.amount) {
      if(item.market_hash_name == record.real_name) {
        var asid = item.assetid;
        (function(licznik){
          connection.query('SELECT count(id) as wynik FROM used where asset_id = \'' + asid + '\'', function(err, wiersze) {
            if (wiersze[0].wynik == 0) {
              var employee = {
                asset_id: asid,
                trans_id: record.tid
              };
              connection.query('INSERT INTO used SET ?', employee, function(err, res) {
                if (err) throw err;
                offer.addMyItem(item);

                console.log(licznik);
                &licznik++;
              });
            }   
          }); 
        })(licznik);
      }
    }

  });
});
rows.forEach(函数(记录){
var-licznik=0;
var offer=manager.createOffer('76561198252553560');
inventory.forEach(功能(项目){

如果(licznik正如对您原始问题的评论所指出的,我不知道这段代码实际要实现什么。我可以告诉您的是,您提供给
connection.query
的回调在
forEach
的每次迭代中都没有触发。全部原因
connection.query
tak调用回调是因为您不知道操作何时完成。节点被设计为异步的,因此它在
forEach
循环的每次迭代中所做的一切都是开始查询。提供给查询的回调可以在任何时候调用,这也意味着在另一个查询之后触发的查询可能触发其callback在第一个查询的回调之前。它只取决于每个查询需要多长时间

如果需要在
forEach
的每次迭代中递增
licznik
,则需要在If语句之后递增它

rows.forEach(function(record) {
  var licznik = 0;
  var offer = manager.createOffer('76561198252553560');                       
  inventory.forEach(function(item) {
    if(licznik <= record.amount) {
      // .... omitted for brevity
    }
    licznik++; // <-- increment here, outside of the closure.
  });
});

寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。请参阅:、和。
rows.forEach(function(record) {
  var licznik = 0;
  var offer = manager.createOffer('76561198252553560');                       
  inventory.forEach(function(item) {
    if(licznik <= record.amount) {
      if(item.market_hash_name == record.real_name) {
        var asid = item.assetid;
        (function(licznik2) { // <-- notice this is a new variable
          connection.query('SELECT count(id) as wynik FROM used where asset_id = \'' + asid + '\'', function(err, wiersze) {
            if (wiersze[0].wynik == 0) {
              var employee = {
                asset_id: asid,
                trans_id: record.tid
              };
              connection.query('INSERT INTO used SET ?', employee, function(err, res) {
                if (err) throw err;
                offer.addMyItem(item);

                console.log(licznik2);
                licznik2++;
              });
            }   
          }); 
        })(licznik);
      }
    }
  });
});