javascript - 如果通过脚本标记调用服务花费更多时间,如何中止服务调用

标签 javascript ajax

我通过脚本标签 src 调用服务,如下所示:

使js脚本标签在运行时和服务响应时具有回调功能。所以我只需要设置一个超时,而服务将不会响应,比如说 10 秒后。

代码如下:

function abc(URL){
var NewScript = d.createElement("script");
            NewScript.type = "text/javascript";
            NewScript.src = url + '&_' + Math.random();
            d.getElementsByTagName('head')[0].appendChild(NewScript);
}


abc('www.example.com?callback=testcallback');

如果服务花费太多时间(假设 30 秒),我想中止服务调用。请注意,我从动态添加的脚本标记中以 ajax 方式调用服务,并将服务 URL 作为脚本 src。

谢谢

最佳答案

类似于:

var returned = false;

function checkTimeout(script) {
    returned = false;
    setTimeout(function() {
        if (returned == false) {
            // Script NOT loaded
            script.parentNode.removeChild(script);
        } else {
            // Script loaded
        }
    }, 10000);
}

function abs(URL) {
    var NewScript = d.createElement("script");
    NewScript.type = "text/javascript";
    NewScript.src = url + '&_' + Math.random();
    checkTimeout(NewScript);
    d.getElementsByTagName('head')[0].appendChild(NewScript);
}

abs('someurl');

然后在您正在加载的脚本中:

returned = true;

// Rest of other script

现在请注意,这只是一个一般概念,我还没有实际尝试过。此外,将所有这些封装到一个“对象”中以使其更容易可能是值得的。

关于javascript - 如果通过脚本标记调用服务花费更多时间,如何中止服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34414183/

相关文章:

javascript - AJAX:如何读取 JSON 数据

javascript - 在 Coffeescript 中迭代 Json ResponseText

javascript - 如何将 <div> 转换为可折叠面板?

PHP 电子邮件表单通过时单词之间没有空格,也没有特殊字符

ajax - 使用 axios 捕获错误

javascript - 将类添加到加载到页面中的元素

javascript - "Not a robot"recaptcha 没有 <form> 而是 AJAX

javascript - Angular 如何根据另一个元素更新元素宽度

javascript - 如何使用 Windows 8 JSON.parse 将 JSON 文本反序列化为日期类型?

javascript - 在 JavaScript 中识别位掩码中的湖泊