asynchronous调用for循环导致variables在callback中出错
我有一个函数中的以下代码:
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被调用,所以当它被称为处理程序等于循环的最后一个处理程序。
我该如何解决这个问题?
这是因为closures。 阅读关于它在这里和这里 。
这应该可以解决你的问题。
for (var key in handlers) { var handler = new handlerClass(key); (function (handlerInstance) { handlerInstance.search(user.login, function (userFound) { if (!userFound) { // use handlerInstance here } }); })(handler); }