Что делать, если переменная изменяется после settimeout, но до того, как она действительно запустится - PullRequest
0 голосов
/ 13 октября 2011
function fun(x){alert(x);}

var i=1;
var t=setTimeout(function(){ fun(i) },10000);
i=2;

поэтому, когда fun (x) действительно запускается, что будет предупреждено.

, если результат равен 2, как сделать x равным 1.

по некоторым причинам,я не могу использовать глобальную переменную.

thx


обновление на самом деле, мне нужно использовать такую ​​вещь в for () {} вещь;

, поэтому возможнолучший способ таков:

setTimeout("testDisplay(" + aa + "," + bb + ")",1000);  

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вы можете использовать дополнительную область. Это работает в любом браузере.

var i=1, t;
(function () {
   var tmp = i;
   t=setTimeout(function(){ fun(tmp) },10000);
})();

i=2;
0 голосов
/ 13 октября 2011
function fun(x){alert(x);}

var i=1;
var iCopy = i;
var t=setTimeout(function(){ fun(iCopy) },10000);
i=2;
...