2012-04-24 4 views
1

私はこのコードを持っています: progressCallbackを作成するにはどうすればよいですか?以下のようなコールバックは、()

何か:

getStuff([ 
    'foo', 
    'bar' 
], function(){ 
    console.log("Finished doing stuff!"); 
}, function(obj){ 
    console.log("Doing stuff with obj: " + obj); 
}); 

よろしく!

答えて

1

あなたは

var getStuff = function(resources, callback, progressCallback) { 

    var deferreds = []; 
     len  = resources.length; // need a variable for later iteration 

    for(var idx = 0; idx < len; idx++){ 
     deferreds.push(<some action>); 
    } 


    deferreds.reverse(); // So the order of deferred lookup is preserved 

    /* we create a named self-executed function, so we can call it when 
     a deferred is done and len variable is decremented */ 

    (function iterateWhen() { 
     if (len--) { 
     /* call progress callback */ 
     progressCallback(deferreds[len]); 
     jQuery.when(deferreds[len]).then(function() { 
      iterateWhen(); 
     }); 
     } 
     else {  
      callback && callback(); 
     } 
    }()); 

}; 
+0

ありがとうございました(私が試していなかった)、このアプローチを試みることができます!あなたのコードのちょっとしたバグです。 "--len"ではなく "len--"でなければなりません。しかし、とにかく、それは完全に働いた:) – alexandernst

+0

'len - 'で更新されました、ありがとう – fcalderan

関連する問題