我有一个行为主题
var source = new BehaviorSubject<int>(0);
然后我用类似的东西处理那个源
var withErrors = source
.Select(v =>
{
if (v == 2)
{
throw new Exception("Ouch ");
}
return v;
})
我想以可以跳过错误的方式订阅 withErrors。像这样的 catch 尝试。
public IObservabe<int> SkipError(IObservable<T> source){
return source
.Catch(e=>SkipErrors(source.Skip(1));
}
然后这样称呼它
var withoutErrors = SkipError(withErrors);
Skip 是为了避免在行为主题上重复最后一个错误,但可惜它不是那样工作的。Skip 不会跳过错误,而只会跳过有效数据,因此行为主题中当前状态的错误会不断通过。
是否有一种聪明的方法来编写 Skip 也会跳过错误。有些东西告诉我这是不可能的,但希望我错了