我想輪詢一些布爾變量,直到它變爲false。我想編寫一個Observable,它發出單個值並完成,只有當特定變量爲false時。以Rx方式定期輪詢
這裏是我特地用:
let waitTask = Observable.interval(250)
.do(() => console.log("DEBUG: Waiting for sync to finish."))
.takeWhile(() => this.syncing)
.last()
.defaultIfEmpty();
是上述適當的(閱讀:最優雅簡潔的&)的方式來做到這一點?特別是我想知道源Observable在哪裏,每隔250ms發射一次,當takeWhile()
運算符發出完成事件時,它將被取消訂閱並清除(底層定時器在內存中被破壞== OS資源釋放)?簡而言之,按原樣使用上述Observable是安全的,不會泄漏任何資源(因爲「被遺忘」的計時器)?很可能不是,但我想100%肯定。
P.S .:我在RxJS上寫這個,但其他平臺可能會有類似的答案,所以我沒有將標籤限制爲RxJS。
P.P.S .:很顯然,我在談論這個場景,我無法將目標變量轉換爲Observable,這就是整個觀點。這只是一個變量,我必須每隔250ms檢查一次。