如果加载超时,LABJS中是否有提供回调函数的规定?

时间:2011-06-11 10:27:15

标签: javascript ajax labjs asynchronous-loader

我通过LabJS异步加载脚本并拥有一系列依赖脚本。现在,如果链中的一个脚本中断(从某种意义上说它无法下载或连接超时),我相信依赖链中的剩余脚本将不会被执行。在这种情况下,是否可以提供自定义回调函数,以便在特定脚本无法加载时采取适当的措施? 如果LabJS无法做到这一点,是否可以使用任何其他异步脚本加载器?

3 个答案:

答案 0 :(得分:4)

这是一个示例,显示如何在LABjs代码周围包装setTimeout()超时...在这种情况下,它提供了一个回退机制,它尝试从CDN加载jquery,然后如果超时通过,它会中止并尝试从本地文件加载jquery。

https://gist.github.com/670840

答案 1 :(得分:2)

根据getify,碰巧坐在离我约20英尺的地方,一般来说,没有办法处理这样的超时,主要是因为超时不是明确的,“积极的”事件。 (在这种情况下,库如何处理依赖链的具体情况,我将让作者自己澄清。)

可以做的是使用您自己的看门狗等待您觉得合适的时间。只需运行一个间隔计时器,检查你的脚本已经进入页面的一些告诉标志,如果经过一定数量的迭代后你看不到它,你就可以退回到替代方案(不同的脚本主机,无论如何)。

答案 2 :(得分:0)

这个怎么样?我测试了这个:

$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');
}