我在服务器端Node.js,并以某种方式陷入了回调。我使用以下函数在表中使用mysql pkg:
插入数据 connection.query('INSERT INTO tableName SET ?', post, function(err, result)
{
if (err) {
if (err.code === 'ER_DUP_ENTRY')
{ }
else
{ throw err; }
}
});
我想记录有多少重复条目而没有停止通过$ .each调用上述函数的循环。
它说here我有3种可能:throw,callbacks和EventEmitter。投掷不起作用,因为这会阻止一切。我用回调尝试了它,但因为我在$ .each的回调中,我无法在上述范围内找到答案。我没有尝试使用静态EventEmitter,因为我不知道如何从$ .each选择器返回任何值,除了选定的数据。
任何建议都会得到满足。
答案 0 :(得分:1)
将所有内容嵌套在闭包中并在回调中计算已完成的查询,以便您知道最后一个查询何时完成:
(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");
}
});
});
})();