我正在检查我的DOM中的某些元素是否完全充电,我想通过一个检查某些元素的promise函数来执行它,如果没有加载则等待它们。
这是我的代码
var jq = jQuery.noConflict();
var df = jq.Deferred();
function keepTrying() {
try{
var el1 = \\element to search for
var success=true
catch(e){
var success= false
}
if (success) {
//Resolves promises
df.resolve();
return df.promise();
} else {
//Here it retries..
setTimeout(function() {
keepTrying();
}, 500);
}
}
keepTrying();
df.done(function() {
//what to do after
});
您认为有更简单的方法吗?我正在使用Qualtrics,因此从一个函数传递到另一个函数时,导入外部库可能会很棘手。
答案 0 :(得分:2)
我使用内部递归函数,并在找到元素时解析promise
您可以为此添加计数,并在n
尝试等后拒绝承诺。
function keepTrying() {
var def = $.Deferred();
(function rec() {
var el = document.getElementById('something');
if ( el === null ) {
setTimeout(rec, 500);
} else {
def.resolve();
}
})();
}
keepTrying().done(function() { ... });