Ответ Ника работает отлично.Я продлил его, вернув обещание
function checkUntil(conditionFunc, millisecondsInterval) {
var retryCount = 0;
var retryCountLimit = 100;
var promise = new Promise((resolve, reject) => {
var timer = setInterval(function () {
if (conditionFunc()) {
clearInterval(timer);
resolve();
return;
}
retryCount++;
if (retryCount >= retryCountLimit) {
clearInterval(timer);
reject("retry count exceeded");
}
}, millisecondsInterval);
});
return promise;
}
, и вы можете вызвать его так:
checkUntil(function () {
return document.querySelector('body');
}, 500).then(function () {
...
...
});
});