Node.js Node js—循环中回调的错误状态

Node.js Node js—循环中回调的错误状态,node.js,callback,google-cloud-messaging,Node.js,Callback,Google Cloud Messaging,我正在使用node js使用GCM向Android设备发送推送通知,如果我从Google收到错误消息,我想删除设备id。代码片段被附加并在循环中运行(i是设备ID的数量) 我的问题是,如果调用返回一个错误(err4),所有未来的循环都将返回if(err4)为true,并且删除第一个错误之后的所有id。为什么err4没有被重置 for(var i = 0; i < noofdeviceIds; i++){ // some more code here to create the 'mess

我正在使用node js使用GCM向Android设备发送推送通知,如果我从Google收到错误消息,我想删除设备id。代码片段被附加并在循环中运行(i是设备ID的数量)

我的问题是,如果调用返回一个错误(err4),所有未来的循环都将返回if(err4)为true,并且删除第一个错误之后的所有id。为什么err4没有被重置

for(var i = 0; i < noofdeviceIds; i++){

// some more code here to create the 'message'.

(function(i) {
  gcm.send(message, function(err4, messageId){
    if (err4) {
    console.log("\nError occured: Notification could not be sent with error: ", err4);//
    if(err4 == 'NotRegistered' || err4 == 'InvalidRegistration'){
       console.log("\nRemoving the entry from the DB.");
        var removeEntryQuery = "DELETE FROM devicereg WHERE deviceregId = '" + deviceregIds[i] + "'";
    req._dbConnection.query(removeEntryQuery, function(err5, row) { 
        if(row!=0){console.log("\nDB returned: ", row);}
      });
    }
  }
else {
    console.log("\nMessage sent with message ID: ", messageId);
      }
});
})(i);
}
for(变量i=0;i
您使用的是
循环?如果是这样,您在这里为所有
i
使用了相同的作用域变量,那么您在
gcm
中使用了什么库?@loadaverage:我在上面的代码中添加了for循环。我们有相同的范围变量,但我的期望是每次调用新回调时err4都会被重置。事件设置err4='null'没有帮助。@bolav:我使用的是gcm-您在这里使用的是
for
循环?如果是这样,您在这里为所有
i
使用了相同的作用域变量,那么您在
gcm
中使用了什么库?@loadaverage:我在上面的代码中添加了for循环。我们有相同的范围变量,但我的期望是每次调用新回调时err4都会被重置。事件设置err4='null'没有帮助。@bolav:我正在使用gcm-