Zum Beispiel var interval = Rx.Observable.interval(1000); interval.subscribe(x => console.log(x));
Und var deferred = Rx.Observable.defer(()=> return interval); deferred.subscribe(x=> console.log(x));
scheinen das Gleiche zu tun. Es scheint, dass Observables standardmäßig "zurückgestellt" sind. Wofür ist Defer sinnvoll?Was ist der Unterschied zwischen zwei Observablen, wenn eine von Defer erstellt wird?
Antwort
defer
nimmt eine Parameterfunktion, die eine Observable zurückgibt. Der Operator selbst gibt ein Observable zurück, wie es bei den meisten Operatoren der Fall ist. Wenn das beobachtbare defer
abonniert ist, führt es die Parameterfunktion aus, ruft das Observable ab, das von der Funktion zurückgegeben wird, und subskribiert dieses Observable und gibt die Werte aus diesem Observable im Stream weiter.
Das ist nützlich, wenn Sie die Erstellung der beobachtbaren zurückgegeben von der Funktion auf defer
Abonnement Zeit verschieben möchten. In Ihrem Beispiel bringt defer
nicht viel Wert, aber es ist zum Beispiel nützlich, wenn Sie einen Callback haben, der einen API-Aufruf ausführt und ein Observable/Promise zurückgibt, aber Sie möchten den API-Aufruf nicht sofort ausführen.
Beispiele sind besser als viele Wörter und Sie werden einige in ähnlicher Frage zu SO finden, zum Beispiel RxJS and React's setState - delay function execution until subscription, How to start second observable *only* after first is *completely* done in rxjs, und Rx.js wait for callback to complete.
- 1. Was ist der Unterschied zwischen:
- 2. Was ist der Unterschied zwischen Zwei-Wege-Datenbindung und Reaktivität?
- 3. MySQL-Index: Was ist der Unterschied zwischen zwei indizierten Feldern?
- 4. Was ist der Unterschied zwischen `==` und `ist`?
- 5. Was ist der Unterschied zwischen zwei Code in Typoskript?
- 6. Was ist der Unterschied zwischen Verilog! und ~?
- 7. Was ist der Unterschied zwischen __builtin_popcountll und_mm_popcnt_u64?
- 8. Was ist der Unterschied zwischen diesen Abfragen?
- 9. Was ist der Unterschied zwischen/* ... */und/** ... */
- 10. Was ist der Unterschied zwischen `&` und `ref`?
- 11. Was ist der Unterschied zwischen Difftime und '-'?
- 12. Was ist der Unterschied zwischen $ und $$?
- 13. Was ist der Unterschied zwischen HttpMethod und RequestType von HttpRequest?
- 14. Was ist der Unterschied zwischen diesen Funktionen
- 15. Was ist der Unterschied zwischen JasperReport-Formaten?
- 16. Was ist der Unterschied zwischen ViewFlipper und ViewSwitcher
- 17. Was ist der Unterschied in zwei Listen?
- 18. Was ist der Unterschied zwischen? und ? = Nil
- 19. Was ist der Unterschied zwischen HybridHttpOrThreadLocalScoped & HttpContextScoped
- 20. Was ist der Unterschied zwischen IMPLODE & JOIN
- 21. Was ist der Unterschied zwischen diesen Regexen
- 22. Was ist der Unterschied zwischen() vs [] vs {}?
- 23. Was ist der Unterschied zwischen window.innerWidth window.outerWidth?
- 24. Was ist der Unterschied zwischen:.! und: r !?
- 25. was ist der Unterschied zwischen [[], []] und [[]] * 2
- 26. Was ist der Unterschied zwischen diesen Initialisierungsmethoden?
- 27. Was ist der Unterschied zwischen diesen beiden?
- 28. Was ist der Unterschied zwischen is_convertible is_assignable
- 29. Was ist der Unterschied zwischen $ (...) und `...`
- 30. Was ist der Unterschied zwischen .Equals und ==