public async Task<IEnumerable<string>> SearchAsync(string term)
{
Console.WriteLine("SearchEngine A - SearchAsync()");
await Task.Delay(1500);//simulate latency
return new[] { "resultA", "resultB" };
}
}
public static IObservable<string> Search_DefferedConcatingTasks(string term) { var searchEngineA = new SearchEngineA(); var searchEngineB = new SearchEngineB(); var resultsA = Observable.Defer(() => searchEngineA.SearchAsync(term).ToObservable()); var resultsB = Observable.Defer(() => searchEngineB.SearchAsync(term).ToObservable()); return resultsA .Concat(resultsB) .SelectMany(x => x); }