我想实现这样的功能:send command->process result->display output。我在这里遇到的两个问题是:a)被动框架迫使我坚持一种类型;b)错误处理真的毫无用处。
a) 因此,假设处理涉及将结果从低级数据转换为高级数据。我发现只有两种方法可以做到这一点。我可以选择将结果类型强制转换为输出类型,但是处理是针对每个订户单独完成的,这是一个nono。第二种方式是主体。但这会导致错误处理问题。
b) 处理错误的唯一合理方法是使用订阅者/观察者。但是一旦onerror以任何形式被调用,一切都会发生。我没有办法和观察者交流“这个例外很好,继续听”。意味着任何“中间”科目都是不可能的。
重新表述我的问题。给定我想要一个被动风格的对象,它接受命令并将其转换为输出。然后一些使用者出现,订阅该对象,调用命令并等待结果。我不知道如何实现这样一个对象,所以我不必在任何错误上重新构建这个该死的东西。
我知道这是“惯例”,一旦发生错误,观察者停止发射,因此观察者自动取消订阅。我知道这是关于线程安全,主题状态等等。但让我们假装这件事已经处理好了。。这样的设计甚至可以不用付出巨大的努力就实现吗?或者说,React流仅仅是用来作为高级事件处理程序的吗?例如,dynamicdata框架确实对它做了一些工作,所以我认为,我在这里犯了一些根本性的错误。
ps:我有一个临时的解决方案,感觉很“黑客”,所以这个问题
class PResult
{
bool Success;
Exception Exception;
}
class PResult<TType> : PResult
{
TType Result;
}
interface IProcessingLink<in TIn, out TOut>
{
void setInput(IObservable<PResult<TIn>> input);
IObservable<PResult<TOut>> GetOutput();
}
然后我只是在一个可观察对象中传播一个“匿名”假定(消除了问题a),让一些基类处理 Package /展开/内部错误。“外部错误处理”只是一个观察者检查假设。
暂无答案!
目前还没有任何答案,快来回答吧!