for循环中的异步调用导致变量在回调中出错

时间:2015-12-02 09:17:56

标签: node.js

我在函数中有以下代码:

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之前循环完成,所以当调用它时,handler等于循环的最后一个处理程序。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

这是因为关闭。阅读herehere

这可以解决您的问题。

for (var key in handlers) {
    var handler = new handlerClass(key);
    (function (handlerInstance) {
        handlerInstance.search(user.login, function (userFound) {
            if (!userFound) {
                // use handlerInstance here
            }
        });
    })(handler);
}