我在函数中有以下代码:
for (var key in handlers) {
var handler = new handlerClass(key);
handler.search(user.login, function(userFound) {
if (!userFound) {
handler.create... //Here handler is the last handler of the loop
}
});
}
我了解会发生什么,在调用handler.create之前,循环完成,因此,在调用它时,处理程序等于循环的最后一个处理程序。
我该如何解决?
最佳答案
这是因为关闭。阅读有关here和here的信息。
这应该可以解决您的问题。
for (var key in handlers) {
var handler = new handlerClass(key);
(function (handlerInstance) {
handlerInstance.search(user.login, function (userFound) {
if (!userFound) {
// use handlerInstance here
}
});
})(handler);
}