首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mosby MVI -如何重试意图?

Mosby MVI -如何重试意图?
EN

Stack Overflow用户
提问于 2017-02-20 23:10:53
回答 1查看 150关注 0票数 1

我正在为一个演示应用程序使用Mosby MVI库,该应用程序在我的交互器中使用Retrofit2在Restful API上执行简单的CRUD操作。我构建了与示例应用程序非常相似的ViewStates,当Retrofit响应错误时包含Throwable。在这种情况下,render()函数会显示一个带有重试按钮的错误屏幕。当点击重试按钮时,我想为失败的意图重新发射最后一项。

我想在Intent中添加一些像retryWhen()这样的东西,当然这只由onError()触发。

有没有一种简单的方法来添加这种行为?

EN

回答 1

Stack Overflow用户

发布于 2017-02-20 23:10:53

实际上,我自己使用combineLatest()解决了这个问题。retrySubject不需要知道先前意图的内容。

代码语言:javascript
复制
class MyViewActivity extends MviActivity<MyView, MyViewState> implements MyView {
  PublishSubject<Boolean> retrySubject =  ... ; // fires on retry Button click
  ...

  @Override
  public Observable<String> searchIntent(){
    Observable<String> searchObservable =   RxSearchView.queryTextChanges(searchView);
    return Observable.combineLatest(searchObservable,retrySubject(searchString, retryClicked) -> searchString);
  }
}

有一件事需要注意。combineLatest()仅当所有可观察对象在订阅后都发出第一个项时才发出项。这就是为什么我需要在Mosby完成订阅后初始化重试。

代码语言:javascript
复制
@Override
  protected void onStart() {
    super.onStart();
    retrySubject.onNext(true);
}

也可以在Github上查看@sockeqwe的答案

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42348038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档