In meinem OS X Statusleiste App neu zu starten ich interval
Funktion bin mit periodisch einen externen API aufrufen und das Ergebnis anzeigen:korrekte Art und Weise beobachtbar Intervall in RxSwift
Observable<Int>
.interval(120.0, scheduler: MainScheduler.instance)
.startWith(-1) // to start immediately
.flatMapLatest(makeRequest) // makeRequest is (dummy: Int) -> Observable<SummaryResponse?>
.subscribeNext(setSummary)
.addDisposableTo(disposeBag)
Wenn jedoch Benutzer die Einstellungen ändert sich in In der Zwischenzeit möchte ich dieses Intervall "neu starten" und sofort einen neuen Anruf tätigen, um die Änderungen widerzuspiegeln (ohne auf den nächsten Anruf warten zu müssen).
Was ist der beste Weg, dies zu tun?
- Shop die beobachtbare als Eigenschaft und setzen Sie ihn auf
nil
oder.dispose()
auf nennen (oder beides) und eine neue beobachtbaren schaffen? - Setzen Sie
disposeBag
aufnil
und erstellen Sie eine neue Observable? - Irgendein anderer Weg?
Danke für die Antwort und alle Vorschläge! Das Wechseln zu 'timer' und das Zuordnen des Dummy int zu void hat diesen Code viel besser aussehen lassen :). 'setSummary' setzt grundsätzlich' NSStatusItem.title', prüft, ob ich Rx verwenden kann, um damit umzugehen :). –
Aber das bringt wirklich nichts zurück, oder? es gibt nur Ereignisse aus, wenn der Timer bereit ist ODER das andere Observable etwas ausstrahlt, richtig? Ich wäre noch an einer guten Möglichkeit interessiert, das Intervall wirklich zurückzusetzen, wenn das wahr ist. –
Ich verstehe nicht, was Sie meinen. Wir setzen den Timer Observable nicht zurück. Vielmehr wird dieser Timer Observable verwendet Setzen Sie das Observable zurück, das von makeRequest zurückgegeben wurde Es klingt, als wollten Sie etwas anderes als das, wonach diese Frage gefragt wurde. – solidcell