Как мне переписать этот код, чтобы не связывать подписчиков, как показано ниже? Причина для того, чтобы спросить, заключается в том, что этот стиль будет ограничивать наблюдаемое в зависимости от другого наблюдаемого из-за стиля кода, это может привести к путанице.
var results = myService
.GetData(accountId) // returns IObservable
.Subscribe(data =>
{
new MyWork().Execute(data) // returns IObservable
.Subscribe(result =>
{
myResults.Add(result);
WriteLine($"Result Id: {result.Id}");
WriteLine($"Result Status: {result.Pass}");
});
});
Добавлено после первого ответа от Питера Бонса
Ниже приведен код класса MyWork, который имеет метод Execute
public class MyWork
{
public virtual IObservable<MyResult> Execute(MyData data)
{
MyResult result = null;
return IsMatch(data)
.Do(isMatch =>
{
if (isMatch)
{
result = new MyResult(1, true);
}
})
.Select(_ => result);
}
public IObservable<bool> IsMatch(MyData data)
{
return true;
}
}