You need to create a scope to correctly capture tmp_id
using a self-executing function. That’s because the entire for loop is one scope, meaning each time through, you’re capturing the same variable. So the callback will end up with the wrong ids, because temp_id
‘s value will get changed before the callback is called.
I’d ignore (or shut off) the warning, though, which seems to be complaining that because temp_id
is mutable, you might reassign it. That’s sort of silly. If you really want to fix it, try using the const
keyword instead of var
.
for(var id=0; id < message.receiver.length; id++){
(function(){
const tmp_id = id;
zlib.gzip(JSON.stringify(message.json), function(err, buffer){
...
pushStatusPool[message.receiver[tmp_id]] = null; // fix memory leak
delete pushStatusPool[message.receiver[tmp_id]];
...
});
})();
}