Skip to content Skip to sidebar Skip to footer

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?"