2015-04-25 7 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); 
}); 

Demo: Fiddle

Смежные вопросы