Javascript 如果加载超时,LABJS中是否有回调函数的规定?
我通过LabJS异步加载脚本,并且有一系列依赖脚本。现在,如果链中的一个脚本中断(即无法下载,或连接超时),我相信依赖链下的其余脚本将不会执行。在这种情况下,是否可以提供自定义回调函数,以便在特定脚本无法加载时采取适当措施?Javascript 如果加载超时,LABJS中是否有回调函数的规定?,javascript,ajax,labjs,asynchronous-loader,Javascript,Ajax,Labjs,Asynchronous Loader,我通过LabJS异步加载脚本,并且有一系列依赖脚本。现在,如果链中的一个脚本中断(即无法下载,或连接超时),我相信依赖链下的其余脚本将不会执行。在这种情况下,是否可以提供自定义回调函数,以便在特定脚本无法加载时采取适当措施? 如果LabJS无法做到这一点,那么其他异步脚本加载程序是否也能做到这一点呢?根据坐在离我20英尺远的getify的说法,通常没有办法处理这样的超时,主要是因为超时不是一个明确的“积极”事件。(对于库在这种情况下如何处理依赖关系链的具体案例,我将让作者自己澄清。) 你能做的就
如果LabJS无法做到这一点,那么其他异步脚本加载程序是否也能做到这一点呢?根据坐在离我20英尺远的getify的说法,通常没有办法处理这样的超时,主要是因为超时不是一个明确的“积极”事件。(对于库在这种情况下如何处理依赖关系链的具体案例,我将让作者自己澄清。)
你能做的就是让你自己的看门狗等你觉得合适的时间。只需运行一个时间间隔计时器,检查是否有迹象表明您的脚本已进入页面,如果经过多次迭代后您看不到它,您可以选择另一个(不同的脚本主机,无论什么)。据getify说,他恰好坐在离我20英尺远的地方,一般来说,没有办法处理这样的超时,主要是因为超时不是一个明确的“积极”事件。(对于库在这种情况下如何处理依赖关系链的具体案例,我将让作者自己澄清。)
你能做的就是让你自己的看门狗等你觉得合适的时间。只需运行一个间隔计时器,检查是否有迹象表明您的脚本已进入页面,如果经过多次迭代后您未能看到它,则可以使用其他方法(不同的脚本主机,无论什么)。下面的示例显示了如何在LABjs代码中包装setTimeout()超时。。。在本例中,它提供了一种回退机制,尝试从CDN加载jquery,然后如果超时时间过去,它将中止该操作,并尝试从本地文件加载jquery
下面是一个示例,演示如何围绕LABjs代码包装setTimeout()超时。。。在本例中,它提供了一种回退机制,尝试从CDN加载jquery,然后如果超时时间过去,它将中止该操作,并尝试从本地文件加载jquery
这个怎么样?我没有测试过这个:
$LAB.script('jquery-from-cdn.js').wait(function(){
if(!window.jQuery) {
$LAB.script('local-jquery.js').wait(load_scripts);
} else {
load_scripts();
}
});
function load_scripts() {
$LAB.script('other-js.js');
}
这个怎么样?我没有测试过这个:
$LAB.script('jquery-from-cdn.js').wait(function(){
if(!window.jQuery) {
$LAB.script('local-jquery.js').wait(load_scripts);
} else {
load_scripts();
}
});
function load_scripts() {
$LAB.script('other-js.js');
}
非常感谢。直接从你那里得到答案真是太棒了:D@Kyle您能举个例子说明如何将其集成到现有的LABjs加载链中吗?谢谢@你不会真的把它整合到现有的连锁店里。。。这种方法基本上将构成自己的独立链,和/或取代现有链。谢谢。直接从你那里得到答案真是太棒了:D@Kyle您能举个例子说明如何将其集成到现有的LABjs加载链中吗?谢谢@你不会真的把它整合到现有的连锁店里。。。这种方法基本上会构成自己的独立链,和/或替换现有链。嗯,我还没有用超时测试过这一点,但在404中,FF/Chrome甚至不会触发等待回调。另一个问题是,您将失去并行下载js文件的能力,这是LABjs的一个关键特性。Jquery必须在下载任何其他脚本之前下载并解析。嗯,我还没有用超时测试过它,但在404中,FF/Chrome甚至没有触发等待回调。另一个问题是,您将失去并行下载js文件的能力,这是LABjs的一个关键特性。在下载任何其他脚本之前,必须下载并解析Jquery。