$.each 内部的异步错误处理

Asynchron Errorhandling inside $.each

我在服务器端 Node.js 并且不知何故陷入了回调。我使用以下函数通过 mysql pkg:

在 Table 中插入数据
  connection.query('INSERT INTO tableName SET ?', post, function(err, result) 
  {
    if (err) {
      if (err.code === 'ER_DUP_ENTRY')
        {  }
      else
        { throw err; }
    }
  });

我想记录有多少重复条目而不停止通过 $.each 调用上述函数的循环。

它说 here 我有 3 种可能性:抛出、回调和 EventEmitter。投掷是行不通的,因为这会停止一切。我尝试了回调,但因为我在 $.each 的回调中,所以我无法在上述范围内找到。我没有尝试使用静态 EventEmitter,因为我不知道如何 return 来自 $.each 选择器的任何值,所选数据除外。

如有任何建议,我们将不胜感激。

将所有内容嵌套在闭包中,并在回调中计算完成的查询,以便您知道最后一个查询何时完成:

(function(){
  var errors = 0;
  var started = 0;
  var successful = 0;
  $.each(..., function(){
    started++;
    connection.query('INSERT INTO tableName SET ?', post, function(err, result) 
    {
      if (err) {
        if (err.code === 'ER_DUP_ENTRY')
          { errors++; }
        else
          { throw err; }
      } else { successful++;}
      if (started == successful + errors) {
         // all done
         console.log(errors + " errors occurred");
      }
    });
  });
})();