Выполнение возвращенных скриптов.каждый () синхронно, но без задержки в порядке завершения

ситуация такова, что я динамически загружаю набор скриптов из API, который я затем вызываю через eval(). Мне все равно, в каком порядке называются сценарии, но я не хочу, чтобы они вызывались одновременно. То есть скрипты A, B и C могут быть возвращены в порядке C, B, A, и я хочу начать eval(C) сразу когда возвращается, но я хочу!--3--> подождать, пока это.

не попадая в полностью волосатый код, вот его суть где "экземпляры" - это строковый массив.

$.each(instances, function( index, instance ) {
    var apiUrl = "http://the-api-url.com/" + instance;
    $.getJSON(apiUrl, function(data) {
        // except I don't want to eval here as evaluations may overlap
        eval(data.script);
    });
}); 

из того, что я понимаю, я мог бы использовать .when() ждать, пока все не будут завершены, но это будет тратить время, так как мне не нужно ждать, пока все будут загружены, чтобы начать их выполнение.

1 ответов


это немного неясно из вашего вопроса, но предполагая, что скрипты могут быть выполнены в любом порядке (A, B, C, A, C, B, B, A, C, etc. тогда вам не нужно ничего менять.

Javascript (в браузере) однопоточный, поэтому обратные вызовы, которые вы передаете в $.getJSON будет запланировано последовательно.