它不清楚如何在REactiveX中向订阅者传播错误,以便Observable不会被破坏.
例
observable.onNext(1);
observable.onNext(2);
observable.onError("Nope");
observable.onNext(3);<<won't work.
Run Code Online (Sandbox Code Playgroud)
我接受这个限制,但是我仍然有一个场景,我希望下游的听众知道发生了错误,我不希望observable死掉.
这个用例的主要用例是UI代码,如果出现错误,我不希望对之前注册的所有可观察对象调用"Setup".
可能的选择是
a)推送具有数据字段和错误字段的自定义对象
class Data
{
int value;
Error * error;
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个解决方案
b)有两个流.一个用于数据,一个用于错误.
observable.onNext(1);
observable.onNext(2);
errorObservable.onNext("Error");
observable.onNext(3);
Run Code Online (Sandbox Code Playgroud)
这方面最常见的做法是什么?
我肯定会选择 A) - 创建一个可以携带数据和/或错误的对象。我并不关心如何将数据和可能的错误包装到该对象中,但通过一个流将两者作为onNext()事件发送是正确的解决方案,它为订阅者提供了所有信息和处理该问题的所有自由。
B) 选项在更复杂的异步场景中实现起来可能相当具有挑战性,并且可能会导致使用大量Subjects,这也很糟糕。
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |