如何继续检查 JavaScript 函数是否可用,然后在可用时调用
How to keep checking if JavaScript function is available, then call once available
我的项目由几个文件组成。我有一个 JavaScript 函数,window.toggleLayer()
在 second.js 的 dojo require 块中定义,我的主要 jQuery 位于 first.js。由于使用 dojo 和 jQuery 以及其他原因,我必须将代码分开。因此,我无法移动我的代码来防止我遇到的问题。
当页面加载时,first.js 加载(在此处调用函数),然后 second.js(函数存在的地方)加载。
当时我需要在 first.js 中调用 window.toggleLayer(),它不可用,我最终得到以下错误:
TypeError: window.toggleLayer is not a function
window.toggleLayer(pKey, true);
在最终弄清楚问题是时间问题后,我最终做了什么,我在函数周围设置了 setTimout:
setTimeout(function () {
if(typeof window.toggleLayer == 'function'){
window.toggleLayer(pKey, true);
}
}, 1000);
函数现在在 1 秒后加载。但随着我的项目变得越来越重,1 秒很可能会改变。我可以将此值更改为 2500 或更高,但这似乎效率很低。
有没有办法动态地检查函数是否存在?并且如果存在就停止检查是否存在然后调用它?
试试这个:
function tryToggleLayer(){
if(window.toggleLayer){ // check if function exists
// If function exists, call it
window.toggleLayer(pKey, true);
}else{
// If not, try again in one second
setTimeout(tryToggleLayer, 1000);
}
}
tryToggleLayer();
这样你就可以每隔一秒检查函数是否就绪,使用递归
我的项目由几个文件组成。我有一个 JavaScript 函数,window.toggleLayer()
在 second.js 的 dojo require 块中定义,我的主要 jQuery 位于 first.js。由于使用 dojo 和 jQuery 以及其他原因,我必须将代码分开。因此,我无法移动我的代码来防止我遇到的问题。
当页面加载时,first.js 加载(在此处调用函数),然后 second.js(函数存在的地方)加载。
当时我需要在 first.js 中调用 window.toggleLayer(),它不可用,我最终得到以下错误:
TypeError: window.toggleLayer is not a function
window.toggleLayer(pKey, true);
在最终弄清楚问题是时间问题后,我最终做了什么,我在函数周围设置了 setTimout:
setTimeout(function () {
if(typeof window.toggleLayer == 'function'){
window.toggleLayer(pKey, true);
}
}, 1000);
函数现在在 1 秒后加载。但随着我的项目变得越来越重,1 秒很可能会改变。我可以将此值更改为 2500 或更高,但这似乎效率很低。
有没有办法动态地检查函数是否存在?并且如果存在就停止检查是否存在然后调用它?
试试这个:
function tryToggleLayer(){
if(window.toggleLayer){ // check if function exists
// If function exists, call it
window.toggleLayer(pKey, true);
}else{
// If not, try again in one second
setTimeout(tryToggleLayer, 1000);
}
}
tryToggleLayer();
这样你就可以每隔一秒检查函数是否就绪,使用递归