情况是我从API动态加载一组脚本,然后通过eval()调用.我不关心调用脚本的顺序,但我不希望同时调用它们中的任何一个.也就是说,脚本A,B和C可以按顺序返回C,B,A,并且我想在返回C时立即开始eval(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); }); });
解决方法
你的问题有点不清楚,但假设脚本可以按任何顺序执行(A,C,C等),那么你不需要改变任何东西.
Javascript(在浏览器中)是单线程的,因此传递给$.getJSON的回调将按顺序进行调度.