2016-07-29 10 views
4

Ich verstehe, dass die Verwendung von Observable.createis discouraged in RxJava wegen fehlender Gegendruckunterstützung. Aus diesem Grund habe ich das neue Observable.fromAsync verwendet, um Callback-APIs zu umbrechen, da es Rückstau mit ansonsten scheinbar demselben Verhalten wie Observable.create behandelt.Observable.create vs Observable.fromAsync in RxJava

jedoch in these draft docs scheint der Vorschlag zu sein, dass beobachtbare meine erstelltes Aussetzens wie unter diesem Problem lösen soll:

Observable<T> observable = Observable.create(onSubscribe).onBackpressureBuffer(); 

Ist das richtig? Worin besteht der Unterschied zwischen den beiden Betreibern? Wenn dies nicht korrekt ist, gibt es jemals einen Grund, .create über .fromAsync zu verwenden?

Antwort

5

create war vor allem dort, um die internen Funktionen von RxJava zu unterstützen und für diejenigen, die Operatoren implementieren können. Es erfordert einen, um den Gegendruck und die Abmeldung manuell zu handhaben, da unterschiedliche Operatoren unterschiedliche Ansätze erfordern.

fromEmitter macht die Gegendruckanforderung explizit und bietet auch einige Abmeldungen Management. Daher ist es schwieriger, es zu missbrauchen. Wir empfehlen den Wechsel zu einem klassischen Callback-API.

Bearbeiten: ab RxJava 1.2.6 der Methodenname ist fromEmitter.

+0

Bekam es - so im Allgemeinen, vergiss 'create' existiert. Vielen Dank! – Marcus

+0

BTW - diese neuen Dokumente, mit denen Sie verbunden sind, sind hervorragend! Mach sie öffentlich, schnell! – Marcus

+0

@Marcus es ist öffentlich http://stackoverflow.com/documentation – LordRaydenMK

Verwandte Themen