javascript: 重试直到promise解决后再执行
javascript: Retrying until promise is resolved and then execute
我正在检查我的 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,因此在从一个函数传递到另一个函数时导入外部库可能会很棘手。
我会使用内部递归函数,并在找到元素时解析 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() { ... });
我正在检查我的 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,因此在从一个函数传递到另一个函数时导入外部库可能会很棘手。
我会使用内部递归函数,并在找到元素时解析 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() { ... });