donné un J'ai vu une question similaire ici, Les extensions réactives soutiennent-elles des tampons de roulement? < / a>, mais les réponses ne semblent pas idéales et c'est un peu vieux, alors je me demandais si la version de la version de Rx-Main prend maintenant en charge cette fonctionnalité. P> iobservable
tampon code> fournit une fonctionnalité similaire qu'elle a chunk les données dans
ilist
3 Réponses :
ne fonctionnerait-il pas avec p>
Observable.bufferwithTimeorcount
? P>
Nope, le composant temporel va frapper immédiatement et tamponner tout jusqu'à ce temps écoulé, et le compte buffera Nombre d'articles. J'ai besoin du temps de mémoire tampon pour réinitialiser lorsqu'un élément est ajouté (comme un papillon).
Comme i répondit dans l'autre poste , oui vous pouvez! Utilisation de la fenêtre code> code> et Fenêtre code> Méthodes de
Observable code>:
public static IObservable<IList<T>> BufferUntilInactive<T>(this IObservable<T> stream, TimeSpan delay)
{
var closes = stream.Throttle(delay);
return stream.Window(() => closes).SelectMany(window => window.ToList());
}
Bonne réponse! Mais ne devrait-on pas publier le flux à l'aide de retour flux.Publish (Hot => ... CODE>), pour éviter de vous abonner à des observables à froid?
J'ai modifié le colonel Panic's bufferuntilinactif code>
opérateur en ajoutant un Publier code > Composant, de sorte qu'il fonctionne correctement avec les observables à froid aussi:
/// <summary>Projects each element of an observable sequence into consecutive
/// non-overlapping buffers, which are produced based on time and activity.</summary>
public static IObservable<IList<T>> BufferUntilInactive<T>(
this IObservable<T> source, TimeSpan dueTime)
{
return source.Publish(published =>
published
.Window(() => published.Throttle(dueTime))
.SelectMany(window => window.ToList())
);
}
Il ressemble à mon
tamponwithinactivité code> réponse à Stackoverflow.com/a/7604825/259769 est ce que vous 'RE Demander. Pouvez-vous clarifier votre question s'il vous plaît?
@Enigmativitity C'est, ce sont exactement la fonctionnalité que je suis après. J'ai réfléchi à cette question dans ma question :) Mais je n'aime pas cette réponse, le répondeur a explicitement indiqué que c'est un travail en cours.
Je ne sais pas ce que vous demandez. Si la minuterie reçoit la réinitialisation à chaque fois qu'un élément est "ajouté" (propagé?) Comment va-t-il faire tamponner en premier lieu?