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

时间:2015-11-10 13:44:09

标签: javascript jquery ajax each

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

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

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); }); }); 等待所有内容完成,但这会浪费时间,因为我不需要等到所有内容都下载才能开始执行。

1 个答案:

答案 0 :(得分:9)

您的问题有点不清楚,但假设脚本可以按任意顺序执行(A, B, CA, C, BB, A, C等等,那么您没有改变任何事情。

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