Penso che dovrei fraintendere qualcosa di fondamentale, perché nella mia mente questo dovrebbe essere il caso più fondamentale per un osservabile, ma per la vita del mio non riesco a capire come farlo dai documenti.RxJS: Come posso aggiornare "manualmente" un Osservabile?
Fondamentalmente, voglio essere in grado di fare questo:
// create a dummy observable, which I would update manually
var eventObservable = rx.Observable.create(function(observer){});
var observer = eventObservable.subscribe(
function(x){
console.log('next: ' + x);
}
...
var my_function = function(){
eventObservable.push('foo');
//'push' adds an event to the datastream, the observer gets it and prints
// next: foo
}
Ma io non sono stati in grado di trovare un metodo come push
. Sto usando questo per un gestore di clic, e so che hanno Observable.fromEvent
per quello, ma sto cercando di usarlo con React e preferirei essere in grado di aggiornare semplicemente il flusso di dati in un callback, invece di usare completamente diverso sistema di gestione degli eventi. Quindi, in pratica Voglio che questo:
$("#target").click(function(e) {
eventObservable.push(e.target.text());
});
Il più vicino ho ottenuto è stato utilizzando observer.onNext('foo')
, ma che non sembrano funzionare in realtà e che è invitato l'osservatore, che non mi sembra giusto. L'osservatore dovrebbe essere la cosa che reagisce al flusso di dati, non cambiandolo, giusto?
Non capisco la relazione osservatore/osservabile?
Dai uno sguardo a questo per chiarire la tua idea (l'introduzione alla Programmazione reattiva ti sei perso): https://gist.github.com/staltz/868e7e9bc2a7b8c1f754. Anche qui ci sono un sacco di risorse dalle quali puoi migliorare la tua comprensione: https://github.com/Reactive-Extensions/RxJS#resources – user3743222
Avevo controllato il primo, sembra una risorsa solida. Il secondo è una grande lista, su di esso ho trovato http://aaronstacy.com/writings/reactive-programming-and-mvc/ che mi ha aiutato a scoprire Rx.Subject, che risolve il mio problema. Quindi grazie! Una volta che avrò scritto un po 'più di app, pubblicherò la mia soluzione, voglio solo testarla un po'. – LiamD
Hehe, grazie per avermi fatto questa domanda, stavo per fare la stessa domanda con lo stesso esempio di codice in mente :-) – arturh