sto imparando RxJS e angolare 2. Diciamo che ho una catena di promessa con più chiamate di funzione asincrona che dipendono dalla precedente uno dei risultati che si presenta come:Chaining osservabili in RxJS
var promiseChain = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 1000);
}).then((result) => {
console.log(result);
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(result + 2);
}, 1000);
});
}).then((result) => {
console.log(result);
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(result + 3);
}, 1000);
});
});
promiseChain.then((finalResult) => {
console.log(finalResult);
});
I miei tentativi di fare gli stessi unicamente mediante RxJS senza l'uso di promesse prodotto il seguente:
var observableChain = Observable.create((observer) => {
setTimeout(() => {
observer.next(1);
observer.complete();
}, 1000);
}).flatMap((result) => {
console.log(result);
return Observable.create((observer) => {
setTimeout(() => {
observer.next(result + 2);
observer.complete()
}, 1000);
});
}).flatMap((result) => {
console.log(result);
return Observable.create((observer) => {
setTimeout(() => {
observer.next(result + 3);
observer.complete()
}, 1000);
});
});
observableChain.subscribe((finalResult) => {
console.log(finalResult);
});
produce lo stesso output catena promessa. Le mie domande sono
Sto facendo bene? Ci sono dei miglioramenti relativi a RxJS che posso apportare al codice precedente
Come posso eseguire ripetutamente questa catena osservabile? cioè aggiunta di un altro abbonamento al termine solo produce un ulteriore 6 se mi aspetto per stampare 1, 3 e 6.
observableChain.subscribe ((finalResult) => { console.log (finalResult); });
osservableChain.subscribe ((finalResult) => { console.log (finalResult); });