这是我的问题 - 我需要使用jQuery.getScript()动态下载几个脚本,并在加载所有脚本后执行某些JavaScript代码,所以我的计划是做这样的事情:
function GetScripts(scripts, callback)
{
var len = scripts.length
for (var i in scripts)
{
jQuery.getScript(scripts[i], function()
{
len --;
// executing callback function if this is the last script that loaded
if (len == 0)
callback()
})
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们假设每个脚本的script.onload事件触发并按顺序和同步执行,那么这只能可靠地工作,所以当两个或多个事件处理程序通过检查(len == 0)并执行时,永远不会出现这种情况.回调方法.
所以我的问题 - 这个假设是正确的,如果没有,那么实现我想做的事情的方法是什么?
我是Javascript/jquery世界的新手,需要一些帮助.现在,我正在编写一个html页面,我必须进行5次不同的Ajax调用才能获取数据以绘制图表.现在,我正在调用这样的5个ajax调用:
$(document).ready(function() {
area0Obj = $.parseJSON($.ajax({
url : url0,
async : false,
dataType : 'json'
}).responseText);
area1Obj = $.parseJSON($.ajax({
url : url1,
async : false,
dataType : 'json'
}).responseText);
.
.
.
area4Obj = $.parseJSON($.ajax({
url : url4,
async : false,
dataType : 'json'
}).responseText);
// some code for generating graphs
)} // closing the document ready function
Run Code Online (Sandbox Code Playgroud)
我的问题是,在上面的场景中,所有的ajax调用都是串行的.也就是说,1次调用完成后2次启动,2次完成3次启动等等.每次Ajax调用大约需要5到6秒才能获取数据,这使得整个页面在大约30秒内被加载.
我尝试将异步类型设为true,但在这种情况下,我没有立即获取数据来绘制图表,这违背了我的目的.
我的问题是:如何将这些调用并行,以便我开始并行获取所有这些数据,并且可以在更短的时间内加载我的页面?
提前致谢.
我正在尝试实现下面的场景,使用JQuery延迟,没有太多运气.
您将使用延迟api的哪些部分,以及如何构建调用以实现以下目标:
第一个ajax callA到serviceA检索ID列表
等到这个电话回来
然后n ajax调用serviceB,每次调用使用callA返回的列表中的Id
等到所有serviceB调用都返回
然后是对serviceC的最终ajax调用