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

时间:2015-12-22 10:53:54

标签: javascript ajax

我通过Script标签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。

谢谢,

1 个答案:

答案 0 :(得分:1)

类似的东西:

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

现在请注意,这只是一个普遍的概念,我还没有尝试过。此外,将所有这些封装到一个"对象"使它更容易。