您需要创建一个范围以
tmp_id使用自执行功能正确捕获。这是因为整个for循环是一个作用域,也就是说,每次循环都捕获相同的变量。因此,回调将以错误的id结尾,因为
temp_id的值将在调用回调之前更改。
不过,我会忽略(或关闭)警告,这似乎是在抱怨说由于
temp_id可变,您可能会重新分配它。真是愚蠢。如果您确实要解决此问题,请尝试使用
const关键字代替
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 leakdelete pushStatusPool[message.receiver[tmp_id]];... }); })();}


