Étant nouveau pour RxJS, je crée souvent un sujet qui conserve des valeurs à l’avenir, mais qui est initialement undefined
. Cela ne peut être que undefined
la première fois. J'utilise actuellement une variable filter
pour ignorer les valeurs undefined
, mais c'est assez fastidieux, car je le fais partout car je n'ai besoin que d'une fois. (Peut-être que je fais quelque chose de mal ici?) Puis-je en quelque sorte souscrire à mySubject
uniquement après qu'il ait obtenu sa première valeur via onNext
?
var mySubject = new Rx.BehaviorSubject(undefined);
mySubject.filter(function(value) {
return value !== undefined;
}).subscribe(function(value) {
// do something with the value
});
Utilisez new Rx.ReplaySubject(1)
au lieu de BehaviorSubject
.
Comme mentionné par Will , vous devriez pouvoir ignorer la première valeur en utilisant l'opérateur de saut:
var mySubject = new Rx.BehaviorSubject(undefined);
mySubject.skip(1).subscribe(function(value) {
// do something with the value
});
Pour l'instant, j'utilise l'opérateur filter
, mais je ne sais pas si c'est une bonne solution:
var mySubject = new Rx.BehaviorSubject().filter(x => !!x);
mySubject.subscribe(value => { /* will receive value from below */);
mySubject.next('value');
mySubject.subscribe(value => { /* also receives the value */ });