Search code examples
javascriptjqueryajaxjquery-callback

Which jQuery callback fired?


Possible Duplicate:
Javascript closure inside loops - simple practical example

Let's imagine you create some ajax requests in a for-loop like this:

$(function(){
    for(var i=0;i<10;i++){
      $.ajax({
        url : '/',
        success : function(){
          console.log('callback '+i+' fired!');
        }
      });
    }
});

Of course, the callback will log 'callback 10 fired' every time because the callbacks are executed asynchronous. The question is: how can you know which callback fired?

jsfiddle


Solution

  • Anonymous self-invoked function will solve this closure issue:

    $(function(){
        for(var i=0;i<10;i++){
          (function(i) {
              $.ajax({
                url : '/',
                success : function(){
                  console.log('callback '+i+' fired!');
                }
              });
          })(i);
        }
    });