执行从.each()同步返回的脚本,但按顺序完成

Bri*_*isk 6 javascript ajax each jquery

情况是我从API调用动态加载一组脚本然后通过它调用eval().我不关心调用脚本的顺序,但我不希望同时调用它们中的任何一个.也就是说,脚本A,B和C可以按顺序返回C,B,A,并且我希望在eval(C)返回C时立即开始,但我想eval(B)等到eval(C)完成.

没有进入完全毛茸茸的代码,这里是"实例"是字符串数组的核心.

$.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);
    });
}); 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我可以.when()等到一切都完成,但这会浪费时间,因为我不需要等到所有下载才能开始执行.

Sea*_*ght 9

这是从你的问题有点不清楚,但假设脚本可以以任意顺序(执行的A, B, C,A, C, B,B, A, C等),那么你没有任何改变.

Javascript(在浏览器中)是单线程的,因此您传递给的回调$.getJSON将按顺序进行调度.