2015-04-25 16 views
1

var json.script是一個數組。每個元素都是腳本的路徑,我想通過$.getScript加載。 它應該看起來像這樣的事情 - 但我不知道數組如何循環讓每一個數組元素:

$.when(
    $.getScript(json.script), 
    $.getScript(json.script), 
    $.getScript(json.script), 
    $.getScript(json.script), 
    $.Deferred(function(deferred){ 
     $(deferred.resolve); 
    }) 
) 
.done(function(script, textStatus) { success(json); }) 
.fail(function(jqxhr, settings, exception) { errormessage(exception); }); 
+0

你想異步加載上一前一後的腳本,因爲你需要爲這些情況不同的代碼 –

回答

1

您可以使用.map調用$.getScript陣列中的每個元素。那麼你可以申請$.when到這樣的結果:

$.when.apply(null, json.script.map(function(e) { 
    return $.getScript(e); 
})) 
.done(function(script, textStatus) { success(json); }) 
.fail(function(jqxhr, settings, exception) { errormessage(exception); }); 
1

你可以遍歷數組德和創建承諾的陣列可以通過到$.when

//create a array of promises, one for each item in the array 
var promises = $.map(json.script, function (script) { 
    return $.getScript(script) 
}); 

$.when.apply($, promises).done(function (script, textStatus) { 
    success(json); 
}).fail(function (jqxhr, settings, exception) { 
    errormessage(exception); 
}); 

演示:Fiddle

相關問題