在EffectHandler上,Transformers、使用者、操作和功能之间有什么区别?我看到这4种类型是受支持的in the docs:
ObservableTransformer<Effect, Event> rxEffectHandler =
RxMobius.<Effect, Event>subtypeEffectHandler()
// Effect Handlers can be an ObservableTransformer
.addTransformer(Effect.SearchRequest.class, this::handleSearchRequest)
// They can also be a Consumer<F> (eg. Consumer<ShowErrorMessage>)
.addConsumer(Effect.ShowErrorMessage.class, view::showErrorMessage, AndroidSchedulers.mainThread())
// Or an Action
.addAction(Effect.SomethingElse.class, this::handleSomethingElse)
// Or a Function<F, E> (eg. Function<SaveToDb, Event>)
.addFunction(Effect.SaveToDb.class, this::handleSavingToDb)
.build();使用哪一个?也许我遗漏了一些我需要先阅读的RxBackground?
发布于 2019-01-14 22:44:28
每个F -> ()的类型签名都给了你一个提示,但粗略的总结是:-消费者effect :获取effect对象作为参数,并调用一些东西作为effect。示例:Toast.makeText(context, effect.message(), duration).show();
() -> ():与消费者相同,但您不需要来自effect对象的任何内容。示例:context.startActivity(new Intent(MyActivity.class))F -> E:阻止从效果到新事件的转换。如果您知道只会发出一个事件,并且可以安全地将其作为阻塞调用来执行,则可以使用。示例:return Event.lookupResult(repository.get(effect.key()))Observable<F> -> Observable<E>:最强大的应用程序接口,一个完整的rx,可以做任何事情来将效果流转换为事件流,包括每个效果发出多个事件,甚至在没有首先收到效果的情况下发出事件。示例:effects.flatMap(effect -> return loadData(effect.uri())).map(Event::dataLoaded) (已编辑)发布于 2019-04-12 03:41:17
下面是它们的工作原理,
╔═════════════╤═══════════════════════════╤═════════════════════╗
║ Type │ Receives effect object? │ Can produce events? ║
╠═════════════╪═══════════════════════════╪═════════════════════╣
║ Action │ No │ No ║
║ Consumer │ Yes │ No ║
║ Transformer │ Yes │ Yes ║
╚═════════════╧═══════════════════════════╧═════════════════════╝https://stackoverflow.com/questions/54183630
复制相似问题