J'utilise des extensions réactives pour appeler une méthode asynchrone et je souhaite mettre en cache le résultat et le renvoyer pour les appels suivants à la méthode.Créer un objet IObservable et renvoyer immédiatement le résultat d'une opération asynchrone en mémoire cache
Comment puis-je créer une instance Observable, la renvoyer et fournir les données (cacheResult) requises par l'abonnement?
public IObservable<Bar> GetBars(int pageIndex, int pageSize)
{
var @params = new object[] { pageIndex, pageSize };
var cachedResult = _cache.Get(@params);
if (cachedResult != null)
{
// How do I create a Observable instance and return the 'cacheResult'...
return ...
}
var observable = new BaseObservable<Bar>();
_components.WithSsoToken(_configuration.SsoToken)
.Get(@params)
.Select(Map)
.Subscribe(c =>
{
_cache.Add(@params, c);
observable.Publish(c);
observable.Completed();
}, exception =>
{
observable.Failed(exception);
observable.Completed();
});
return observable;
}
merci pour la réponse et toutes les infos – AwkwardCoder