【发布时间】:2012-11-28 14:31:09
【问题描述】:
我有一些这样的代码:
for(var id=0; id < message.receiver.length; id++){
var 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]];
...
});
}
我收到警告,在闭包中使用 tmp_id 可能会导致问题,因为它是一个可变变量。
我怎样才能避免这种情况?我的意思是我怎么能发送一个不可变变量到回调,因为这是一个 for 循环,我不能更改 zlib.gzip 的代码?或者换句话说,我如何将参数传递给闭包?
【问题讨论】:
-
如何避免?你的问题不清楚。请更具体地说明您需要帮助的内容。
-
我开始写回复......但很明显这可以使用重构:(你在压缩同一件事
message.receiver.length次。发布整个事情?
标签: debugging node.js closures