我通过脚本标签 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/