
>来自API的getKey()
>在另一个库Foo中使用返回的键,并等待调用回调.
>当回调返回时,将结果发送到API.
我希望这是一个单一的链接调用,所以我只需要订阅一次.我猜我可以使用merge()或join()或其他东西,但不确定处理回调的最佳方法是什么.
有没有办法让这更好?这是我到目前为止:
API.getKey().subscribe(new Action1<String>() { @OverrIDe public voID call(String key) { Foo foo = new Foo(); foo.setAwesomeCallback(new AwesomeCallback() { @OverrIDe public voID onAwesomeReady(String awesome) { API.sendAwesome(awesome) .subscribe(new Action1<VoID>() { @OverrIDe public voID call(VoID aVoID) { handleAwesomeSent(); } }); } }); foo.makeAwesome(); }});解决方法 调整clemp6r的解决方案,这是另一个既不需要主题也不需要嵌套订阅的解决方案: API.getKey().flatMap(new Func1<String,Observable<String>>() { @OverrIDe public Observable<String> call(String key) { return Observable.create(new Observable.OnSubscribe<String>(){ @OverrIDe public voID call(final Subscriber<? super String> subscriber) { Foo foo = new Foo(); foo.setAwesomeCallback(new AwesomeCallback() { @OverrIDe public voID onAwesomeReady(String awesome) { if (! subscriber.isUnsubscribed()) { subscriber.onNext(awesome); subscriber.onComplete(); } } }); foo.makeAwesome(); } });}).flatMap(new Func1<String,Observable<String>>() { @OverrIDe public Observable<String> call(String awesome) { return sendAwesome(awesome); }}).subscribe(new Action1<VoID>() { @OverrIDe public voID call(VoID aVoID) { handleAwesomeSent(); }}); 一般来说,我认为总是可以使用Observable.create()在Observable中包装任何基于回调的异步 *** 作.
总结以上是内存溢出为你收集整理的android – 使用回调/监听器链接RxJava observable全部内容,希望文章能够帮你解决android – 使用回调/监听器链接RxJava observable所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)