How To Pass Parameter To An Anonymous Function Defined In The Settimeout Call?
Here is my code: function addRcd2(timeOut){ for(var c=0; c less 5; c++){ var rcdi = 'rcd_'+c+''; setTimeout(function(){ $('.tbl1 tbody').append(rcdi); },time
Solution 1:
Typical creating a function in a loop problem. All closures you pass to setTimeout
have a reference to the samercdi
variable. Defining the variable inside the loop is the same as defining it outside:
var rcdi;
for(var c=0; c < 5; c++){
rcdi = "rcd_"+c+"";
// ...
}
which makes it a bit more apparent that you only deal with one variable here.
You have to introduce a new scope, which in JavaScript can only be achieved through functions:
functiongetCallback(val) {
returnfunction(){
$('.tbl1 tbody').append(val);
};
}
functionaddRcd2(timeOut){
for(var c=0; c < 5; c++){
setTimeout(getCallback("rcd_"+c),timeOut*c);
}
}
As you can see in other answers, you can also use immediate functions. Use what you find more readable.
Solution 2:
functionaddRcd2(timeOut){
for(var c=0; c less 5; c++){
var rcdi = "rcd_"+c+"";
setTimeout((function(x) {
returnfunction(){
$('.tbl1 tbody').append(x);
};
})(rcdi),timeOut*c);
}
}
Post a Comment for "How To Pass Parameter To An Anonymous Function Defined In The Settimeout Call?"