Wie man veränderbare Variable von der Schließung vermeidet

Ich habe einige code wie dieser:

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]];
   ...
   });
}

Und ich bekam eine Warnung, dass die Verwendung tmp_id im Verschluss kann zu Problemen führen, denn es ist eine veränderbare variable.

Wie könnte ich das vermeiden? Ich meine, wie könnte ich das senden einer unveränderlichen variable um Rückruf, da diese eine for-Schleife und ich kann nicht den code ändern von zlib.gzip? Oder in anderen Worten, wie konnte ich passiere ein argument für eine Schließung?

Kommentar zu dem Problem - Öffnen
Wie können Sie vermeiden, was? Ihre Frage ist nicht klar. Bitte viel mehr spezifisch, was Sie wollen, helfen Sie mit. Kommentarautor: jfriend00
Ich begann zu schreiben, eine Antwort ist... aber es wird wirklich klar, dass dies könnte ein umgestalten 🙁 Du bist Gzip die gleiche Sache, die - Meldung.- Empfänger.Länge - mal. Post die ganze Sache? Kommentarautor: brianreavis

InformationsquelleAutor der Frage bxshi | 2012-12-11

Schreibe einen Kommentar