Node.js Node js—循环中回调的错误状态
我正在使用node js使用GCM向Android设备发送推送通知,如果我从Google收到错误消息,我想删除设备id。代码片段被附加并在循环中运行(i是设备ID的数量) 我的问题是,如果调用返回一个错误(err4),所有未来的循环都将返回if(err4)为true,并且删除第一个错误之后的所有id。为什么err4没有被重置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
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-