javascript - 如何使用 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 次?
解决方案
下面的代码对我有用。只需在发现 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);
推荐阅读
- python - 如何根据 Selenium 提供的 HTML 单击元素?
- oracle - Oracle - 授予角色创建作业权限
- rest - 如何将ec2端点的响应格式化为json
- ios - iOS字体freetype trueType AAT
- java - 如何为 ubuntu 系统增加 java heapsize?
- javascript - Uncaught TypeError: r is not a function at index.js:1
- vue.js - fontawesome 错误“找不到一个或多个图标”
- angularjs - 为什么在模态的ie11中不调用ng-click,但在没有模态的相同结构上工作?
- sql - SQL Server 一列数据作为行,另一列作为列
- laravel - 雄辩的模型 setRelation 生成数组而不是 Collection