Фрагмент RXJS, дающий: «this._next не является функцией» при создании и вызове Observable - PullRequest
0 голосов
/ 20 марта 2019
const myObservable = new rxjs.Observable(

   function(observer1){

        let button = document.getElementById('mybutton');
        //alert(observer1.error);

        button.addEventListener("click",observer1.next);
        alert(button);
        ///observer1.next(1);
    }
);

const myObserver = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
  complete: () => console.log('Observer got a complete notification'),
};
myObservable.subscribe(myObserver);

идея заключается в том, что при каждом нажатии должен быть вызван наблюдатель. Почему я получаю сообщение об ошибке «не работает» при нажатии кнопки?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019
const myObservable = new rxjs.Observable(

function(observer1){
alert('invoked');

let button = document.getElementById('mybutton');
var clickHandler = (arg) => observer1.next(arg);
button.addEventListener("click",clickHandler);
//alert("event listener added and myFun invoked");
//observer1.next(1);
}


);
const myObserver = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
  complete: () => console.log('Observer got a complete notification'),
};
myObservable.subscribe(myObserver);
alert("ran it");

Идея состоит в том, чтобы обернуть вызов Observer1.next внутри функции, так как ее нужно вызывать с контекстом объекта.

0 голосов
/ 20 марта 2019

В соответствии с этим примером это должны быть три параметра, но не 1 объект с 3 свойствами.

  var observer = Rx.Observer.create(
      x => console.log(`onNext: ${x}`),
      e => console.log(`onError: ${e}`),
      () => console.log('onCompleted'));

    observer.onCompleted();

есть ваш настроенный код

 let button = document.getElementById('mybutton');
 const myObservable= Rx.Observable.fromEvent(button , 'click')   

    myObservable.subscribe(
         x => console.log('Observer got a next value: ' + x),
         err => console.error('Observer got an error: ' + err),
         () => console.log('Observer got a complete notification')
    );

есть пример из http://reactivex.io/documentation/operators/subscribe.html

var observer = Rx.Observer.create(
  function (x) { console.log('Next: %s', x); },
  function (err) { console.log('Error: %s', err); },
  function () { console.log('Completed'); });

var source = Rx.Observable.range(0, 3)

var subscription = source.subscribe(observer);

Как вы могли видеть, есть три параметра для статического метода Rx.Observer.create.

https://jsfiddle.net/dhkoaufr/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...