Ce n'RxJS.Observables anti-rebond?
Quelqu'un peut-il expliquer en langage simple ce que RxJS Observavle fonction anti-rebond?
J'imagine qu'il émet un événement de temps en temps en fonction des paramètres, mais mon code ci-dessous ne fonctionne pas comme je l'espérais.
var x$ = Rx.Observable.fromEvent(window, 'click')
.map(function(e) {return {x:e.x, y:e.y};})
.debounce(1000)
.subscribe(function(el) {
console.log(el);
});
et le JsBin version.
Je m'attend à ce que ce code serait d'imprimer en un clic une fois par seconde, peu importe à quelle vitesse je suis en cliquant sur. Au lieu de cela, il imprime le sur ce que je crois sont des intervalles aléatoires.
Pour info le rxmarbles site web peut aider. C'est un travail en cours et n'a pas tous les opérateurs, mais il n'ont
il y a un lien dans ma réponse 🙂
debounce
🙂il y a un lien dans ma réponse 🙂
OriginalL'auteur Adrian | 2015-06-15
Vous devez vous connecter pour publier un commentaire.
Anti-rebond va émettre une valeur après un intervalle de temps spécifié s'est écoulé sans qu'une autre valeur émise.
À l'aide de simples diagrammes suivants, peut apporter plus d'aide:
L'intermédiaire des éléments (dans ce cas, 2,3,4) sont ignorés.
Un exemple est illustré ci-dessous:
J'ai utilisé nœud pour illustrer ce... en supposant que vous avez nœud installé, vous pouvez l'exécuter en tapant
Une fois ce nœud programme est démarré, vous pouvez tapez des valeurs dans la console -- si vous tapez rapidement les éléments sont ignorés, et si le type par intermittence rapide et lente des éléments apparaîtra après une faute de frappe (dans l'exemple ci-dessus j'ai 500ms) à la console ("Suivante: ")
Il y a aussi d'excellents documents de référence à https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/debounce.md
debounce
alors que la précédente offert la solution à mon problème.cette réponse reproduit exactement le même schéma que j'ai fourni un lien vers.
En effet. J'ai regardé beaucoup à rxmarbles avant de poser la question. C'est pourquoi j'ai demandé de l'anglais ordinaire.
OriginalL'auteur Eric Broda
Longue histoire courte:
anti-rebond attend pour X temps que le flux n'est pas émettre de nouvelle valeur, puis laissez-la dernière valeur passe.
Longue histoire:
Une fois qu'une valeur est émise, anti-rebond fera une pause dans son émission pour X temps pour voir si une autre valeur est émise, en fait, bloquant le flux pendant ce temps. Si une nouvelle valeur est émis lors de la antirebond de temps alors que la minuterie est redémarré et anti-rebond attend encore pour le temps plein.
Si sa minuterie expire sans qu'une nouvelle valeur émise, il a laissé la dernière valeur passe.
Disons que vous voulez ajouter la saisie semi-automatique d'une zone de saisie. Si l'utilisateur d'insérer "un" vous pouvez lui montrer les choix "acorn, l'alaska", mais si le droit de l'utilisateur après appuyez sur "l" vous propose simplement "alaska". Dans ce cas, il est préférable d'attendre que l'utilisateur à s'arrêter en appuyant sur le clavier pour éviter de faire un travail inutile. anti-rebond, c'est le bon outil ici: il attend les X temps, le flux n'est pas émettre de nouveau la valeur
OriginalL'auteur Riccardo Galli
.anti-rebond()
produit la dernière valeur reçue si aucune valeur n'a été reçue dans l'intervalle spécifié.Cela signifie que dès que vous cliquez à l'intérieur d'un deuxième rien ne sera produite.
Si vous voulez valeurs d'accélération d'être émis ne plus fréquentes que chaque seconde que vous devez utiliser
.de l'échantillon(1000)
à la place.oh il y a tellement de différents opérateurs disponibles. Merci
OriginalL'auteur zerkms