【发布时间】:2020-09-21 11:24:46
【问题描述】:
与 promises 一样,Observables 也遵循推送模型。然而 observable 是懒惰的,因为它们需要一些订阅者来获取数据。
let Rx = require('rxjs');
let isTrue = true;
let promise = new Promise((resolve, reject) => {
if (isTrue) {
resolve('Hi Promise')
} else {
reject(new Error('Message error in promise'))
}
})
let data$ = new Rx.Observable((observer) => {
if (isTrue) {
observer.next('Hi Observable');
} else {
observer.error(new Error('error observer'))
}
})
// DATA Collector
console.log(promise, data$)
//Promise { 'Hi Promise' } Observable { _isScalar: false, _subscribe: [Function] }
promise.then((data) => {
console.log(data). //Hi Promise
}).catch((err) => {
console.log(err)
})
data$.subscribe((data) => {
console.log(data); // output - ‘Hi Observable’
});
输出
Promise { 'Hi Promise' } Observable { _isScalar: false, _subscribe: [Function] }
Hi Observable
Hi Promise
在 promise 的情况下,它们立即执行并且数据可用。但是,除非订阅,否则数据在 observable 中不可用。
还是先打印 Observable 部分,然后再打印 promise 部分?
【问题讨论】:
标签: javascript node.js promise observable