首页 > 解决方案 > 如何使用 setinterval 检查方法是否可用

问题描述

页面加载一段时间后,第三方 js 库正在加载。基本上取决于它我必须调用它的方法。setInterval该方法是使用或setTimeout是否是可用的方法(ag)检查第三方方法,然后执行。间隔将每 X 秒运行 10 次,但如果方法 (ag) 可用,则停止间隔并执行自定义函数。

$(document).ready( function () {

 setInterval(function () {
     if (typeof ag != 'undefined') { 
         // ag is available and execute your code here. 
         clearInterval();
     }
 }, 10);

}

有没有更好的解决方案?

编辑1:

使用上面链接的这个答案 -

function whenAvailable(name, callback) {
    var interval = 10; // ms
    window.setTimeout(function() {
        if (typeof name != 'undefined') {
            callback();
        } else {
            whenAvailable(name, callback);
        }
    }, interval);
}

whenAvailable("sp", function(t) {
    // do something
});

但是如何设置限制以执行最多 10 次?

标签: javascriptjquery

解决方案


下面的代码对我有用。只需在发现 ag 时或重复 10 次后清除间隔。

var x = 0;
var intervalID = window.setInterval(function() {
    if (typeof ag != "undefined") {
        console.log('ag loaded!);
        window.clearInterval(intervalID);
        // do stuff
    }
    if (++x === 10) {
        console.log('complete 10 times');
        window.clearInterval(intervalID);
    }
}, 1000);

推荐阅读