RxJS - как передать новые реквизиты наблюдателю - PullRequest
0 голосов
/ 07 ноября 2018

Использование 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 - это функция соединения с БД, а customProp - это запрос, который необходимо выполнить на БД

.

1 Ответ

0 голосов
/ 08 ноября 2018

Это невозможно без расширения класса Observable, и это не нужно. Это может быть заводская функция:

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

Обычно редко возникает необходимость создавать наблюдаемые вручную, поскольку RxJS API предоставляет богатый набор функций для создания, преобразования и объединения наблюдаемых.

...