发生错误后重新启动BehaviorSubject

时间:2016-10-04 10:10:10

标签: java android rx-java behaviorsubject

通缉行为:

subject = BehaviorSubject.create(1);
subject.subscribe(number -> print(number), error -> print(error));

subject.onNext(2);
subject.onNext(3);
subject.onError(new RuntimeException("I'm an error"));
subject.onNext(4);
subject.onNext(5);

使用此输出:

1
2
3
I'm an error
4
5

我的问题是onNext onError工作后RxJava(这是 public static List<string> GetAutoCompleteData(string username) { List<string> result = new List<string>(); using (SqlConnection con = new SqlConnection("Data Source=SureshDasari;Integrated Security=true;Initial Catalog=MySampleDB")) { **//check if user name is not null** if(null != username){ using (SqlCommand cmd = new SqlCommand("select DISTINCT UserName from UserInformation where UserName LIKE '%'+@SearchText+'%'", con))} else{ using (SqlCommand cmd = new SqlCommand("select UserName from UserInformation, con))} } { con.Open(); cmd.Parameters.AddWithValue("@SearchText", username); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { result.Add(dr["UserName"].ToString()); } 规则之后的意图),但我需要有弹性错误,同时也将它们传递给流(向用户显示一些反馈)。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:3)

如果您想要忽略onErroronComplete,则会有RxRelay库。

说明

  

主题对于弥合非Rx API之间的差距很有用。但是,它们以有害的方式处于有状态:当它们收到onComplete或onError时,它们不再可用于移动数据。这是可观察的合同,有时它是理想的行为。大部分时间都没有。

     

继电器只是没有上述属性的主题。它们允许您轻松地将非Rx API桥接到Rx,而无需担心意外触发终端状态。

答案 1 :(得分:0)

尝试在订阅

之前使用.onErrorReturn()