SetTimeOut在循环中

时间:2012-12-14 16:00:35

标签: javascript jquery asp.net

我想知道以下代码是否会引入竞争条件:

 rows.each(function () {

        var current = this;
        var doOperation = function () {
            current.someMethod();      
            // do some operation using current
        };

        setTimeout(doOperation, 1);
    });

在settimeout延迟期间,浏览器是否可能开始执行循环的下一次迭代并更改“current”,以便doOperation不会使用orignally分配的值来执行?

2 个答案:

答案 0 :(得分:4)

那里没有危险,因为每个迭代的doOperation将关闭一个新的current局部变量,而不会干扰之前的变量。

答案 1 :(得分:3)

这里的一切似乎都井井有条。 setTimeout位于each函数的关闭位置,因此对于您拥有的每一行,其doOperation都会有所不同。