为 getScript() 添加超时

Add a timeout to getScript()

我正在使用 getScript() JQuery 方法,但确实可以添加超时。有些脚本在 6-8 秒内不会返回失败状态,这太长了。

这可能吗?

我搜索了一下,没有找到解决方案。

类似于:

$.getScript(a + "/myspeed/MySpeedServer/mss/js")
        .done(function() {
            //do stuff
        })
         .fail(function() {
            //do stuff
        });
         .timeout(2000)

$.getScript 只是 $.ajax() 的包装。因此,您可以使用 $.ajax()timeout 选项,如下所示。

$.ajax({
    url: url,
    dataType: "script",
    timeout: 2 * 1000
}).done(function() {
    //do stuff
})
.fail(function() {
    //do stuff
});

来自 the doc 的注释:仅在 Firefox 3.0+ 中,脚本和 JSONP 请求不能被超时取消;脚本将 运行 即使它在超时期限后到达。

您也可以将 abort() 方法用作 stated here

因为 getScript 不接受超时选项。 您可以使用 ajaxSetup 方法来设置全局超时。

如果全局超时不适用,您可以使用

$.get({
  url: a + "/myspeed/MySpeedServer/mss/js",
  timeout: 5000, // 5 seconds
  dataType: "script"
});