fonksiyon kodu (source code on github): Bu doğrultudanodejs/events.js 'emitMany işlevindeki dinleyici dizisinin klonlanmasının nedeni nedir?
function emitMany(handler, isFn, self, args) {
if (isFn)
handler.apply(self, args);
else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
listeners[i].apply(self, args);
}
}
: handler
Bu kapsamda adlandırılan dinleyici bir dizi klonlanmış ve daha sonra da klon atanan
var listeners = arrayClone(handler, len);
listeners
adlı yeni değişken. Bunun ne işe yaradığını merak ediyorum.
Bir dinleyicinin kendisini listeden kaldırabileceğinden şüpheleniyorum ve bu işlem for döngüsünü sayaçta bozacaktır (liste öğelerinin dizinleri kaldırıldıktan sonra değişecektir, ancak sayaç i
körü körüne devam etmeyecektir.) o.
Açıklamam doğru mu, yoksa başka bir şey mi var?