如何等待在javascript中定义元素?
我需要在javascript中执行与此等效的操作:如何等待在javascript中定义元素?,javascript,Javascript,我需要在javascript中执行与此等效的操作: while (typeof someObject == 'undefined') { sleep(10); // 10ms } 我只是不太明白如何编写代码 我有这个: function sleep(ms, callback, arg) { setTimeout(function() { callback(arg); }, ms); } function waitForDef(elem) {
while (typeof someObject == 'undefined') {
sleep(10); // 10ms
}
我只是不太明白如何编写代码
我有这个:
function sleep(ms, callback, arg) {
setTimeout(function() {
callback(arg);
}, ms);
}
function waitForDef(elem) {
if (typeof elem == 'undefined') {
sleep(10, waitForDef, elem);
}
}
但是我不清楚如何从我的代码中使用它。有一个持续检查元素的间隔:
var interval = setInterval(function() {
// get elem
if (typeof elem == 'undefined') return;
clearInterval(interval);
// the rest of the code
}, 10);
有一个持续检查元素的间隔运行:
var interval = setInterval(function() {
// get elem
if (typeof elem == 'undefined') return;
clearInterval(interval);
// the rest of the code
}, 10);
无论代码在哪里定义
someObject
,都应该接受一个回调函数,在定义变量后调用该函数。您可能应该直接将值传递给回调,而不是与全局变量共享状态。听起来您在寻找承诺。@meagar:没错。您应该使用回调函数。这通常是错误代码设计的症状。你到底想做什么?为什么需要等待此元素存在?为什么它不立即存在?是什么创造了它?何时创建?为什么要创建它?一旦它存在,你打算用它做什么?在我的页面被加载后,我需要调用一个js函数,该函数只会在一个表被赋予某个类后存在一段时间。当我试图从一个onload函数调用该函数时,大多数情况下都会失败,因为表中还没有该类。如果我从等待1秒的setTimeout调用该函数,它99%的时间都能工作。我只想等到类放在表上并且函数存在时再调用它。无论代码在哪里定义someObject
,都应该接受回调函数,在定义变量后调用回调函数。您可能应该直接将值传递给回调,而不是与全局变量共享状态。听起来您在寻找承诺。@meagar:没错。您应该使用回调函数。这通常是错误代码设计的症状。你到底想做什么?为什么需要等待此元素存在?为什么它不立即存在?是什么创造了它?何时创建?为什么要创建它?一旦它存在,你打算用它做什么?在我的页面被加载后,我需要调用一个js函数,该函数只会在一个表被赋予某个类后存在一段时间。当我试图从一个onload函数调用该函数时,大多数情况下都会失败,因为表中还没有该类。如果我从等待1秒的setTimeout调用该函数,它99%的时间都能工作。我只想等到类被放在表上,函数存在,然后调用它。这看起来对我来说非常合适。我已经实现了它,到目前为止还不错。我还需要再运行一段时间才能确定。谢谢这有点棘手,因为它不是我等待的元素,而是一个属性。因此,我必须首先等待元素存在,然后等待它具有属性。但是你的回答让我走上了正确的道路。你应该仍然只能做一次间歇。你有两个吗?没有,只有一个。我首先测试元素,然后测试属性。这看起来对我来说非常合适。我已经实现了它,到目前为止还不错。我还需要再运行一段时间才能确定。谢谢这有点棘手,因为它不是我等待的元素,而是一个属性。因此,我必须首先等待元素存在,然后等待它具有属性。但是你的回答让我走上了正确的道路。你应该仍然只能做一次间歇。你有两个吗?没有,只有一个。我首先测试元素,然后测试属性。