1

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

4

3 回答 3

4

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

https://gist.github.com/670840

于 2011-06-11T17:48:42.907 回答
2

根据恰好坐在离我大约 20 英尺远的 getify 的说法,通常没有办法像这样处理超时,主要是因为超时不是明确的“积极”事件。(在这种情况下库如何处理依赖链的具体情况,我会让作者自己澄清。)

可以做的是使用您自己的看门狗等待您认为合适的时间。只需运行一个间隔计时器,检查您的脚本是否已进入页面的一些迹象,如果经过多次迭代后您无法看到它,您可以退回到替代方案(不同的脚本主机,无论如何)。

于 2011-06-11T13:48:06.797 回答
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');
}
于 2012-02-12T20:28:14.913 回答