RxJS-如何将新道具传递给观察者



使用RxJS如何在观察者上传递新属性?所以基本上我希望道具"customProp"可用于可观察的

const { Observable } = require('rxjs');
const observable = Observable.create(function (observer) {
console.log(observer.customProp); //How to get this working?
observer.next(1);
observer.next(2);
observer.next(3);
setTimeout(() => {
observer.next(4);
observer.complete();
}, 1000);
});
console.log('just before subscribe');
observable.subscribe({
next: x => console.log('got value ' + x),
error: err => console.error('something wrong occurred: ' + err),
complete: () => console.log('done'),
customProp: 'Hello World RxJS',
});
console.log('just after subscribe');
---->>> Output
just before subscribe
undefined //How can I get this working, please?
got value 1
got value 2
got value 3
just after subscribe
=> undefined
got value 4
done

添加更多信息——所以基本上我试图创建一个冷的可观察对象,其中生产者需要一个来自订户的道具

//Cold observable
var coldObservable = new Observable((observer) => {
var myProducerObj = new MyProducer();
myProducerObj.executeQuery(observer.customProp);
// How could we get customProp over here?
});

添加使用信息---coldObservable是DB连接函数,customProp是需要在DB 上执行的查询

如果不扩展Observable类,这是不可能的,而且这是不需要的。它可能是工厂功能:

const createObservableWithCustomProp = (customProp, observer) => {
return new Observable((observer) => {
var myProducerObj = new MyProducer(customProp);
...
});
};

通常很少需要手动构建可观察性,因为RxJS API提供了丰富的功能集来创建、转换和组合可观察器。

最新更新