Мне нужно создать обещание JavaScript, которое не будет разрешено до тех пор, пока не будет выполнено определенное условие. Допустим, у меня есть сторонняя библиотека, и мне нужно подождать, пока в этой библиотеке не появится определенное условие данных.
Меня интересует сценарий, в котором нет способа узнать, когда выполняется это условие, кроме простого опроса.
Я могу создать обещание, которое ждет его - и этот код работает, но есть ли лучший или более краткий подход к этой проблеме?
function ensureFooIsSet() {
return new Promise(function (resolve, reject) {
waitForFoo(resolve);
});
}
function waitForFoo(resolve) {
if (!lib.foo) {
setTimeout(waitForFoo.bind(this, resolve), 30);
} else {
resolve();
}
}
Использование:
ensureFooIsSet().then(function(){
...
});
Я бы обычно реализовывал максимальное время опроса, но не хотел, чтобы это скрывало проблему здесь.