Я хочу опросить некоторую переменную boolean, пока она не станет ложной. Я хотел бы составить Observable, который испускает одно значение и завершается, только когда конкретная переменная получает значение false.Периодически опрос в Rx-способе
Вот что я пришел с:
let waitTask = Observable.interval(250)
.do(() => console.log("DEBUG: Waiting for sync to finish."))
.takeWhile(() => this.syncing)
.last()
.defaultIfEmpty();
ли выше правильной (читай: самый элегантный & краткий) способ сделать это? Особенно мне интересно узнать об источнике, наблюдаемом здесь, который испускает каждые 250 мс, будет ли он отписано и очищено (основной таймер, уничтоженный в памяти == освобожденные ресурсы ОС), когда оператор takeWhile()
выдает событие завершения? В скором времени безопасно использовать вышеупомянутое Наблюдаемое, как есть, без утечки каких-либо ресурсов (из-за «забытого» таймера)? Скорее всего, нет, но я бы хотел быть на 100% уверен.
P.S .: Я пишу это в RxJS, но другие платформы, вероятно, будут иметь похожий ответ, поэтому я не ограничиваю теги RxJS.
P.P.S .: Очевидно, я говорю о сценарии, когда я не могу преобразовать целевую переменную в Observable, вот и все. Это просто переменная, которую я должен проверять каждые 250 мс.