tôi đang học RxJS và góc 2. Hãy nói rằng tôi có một chuỗi lời hứa với nhiều chức năng cuộc gọi async mà phụ thuộc vào kết quả trước đó của trông giống như:Chaining quan sát trong 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);
});
nỗ lực của tôi tại làm chỉ sử dụng RxJS mà không sử dụng lời hứa được tạo ra như sau:
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);
});
Nó mang lại kết quả tương tự như chuỗi lời hứa. Câu hỏi của tôi là
Tôi có làm đúng không? Có bất kỳ cải tiến liên quan đến RxJS nào mà tôi có thể thực hiện đối với mã trên không
Làm cách nào để chuỗi này có thể quan sát được thực thi nhiều lần? tức là Thêm một đăng ký khác ở cuối chỉ tạo thêm 6 đăng ký mặc dù tôi mong đợi nó in 1, 3 và 6.
observableChain.subscribe ((finalResult) => { console.log (finalResult); });
observableChain.subscribe ((finalResult) => { console.log (finalResult); });