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);
这个想法是,在evry click上,应调用观察者。单击按钮时,为什么我会遇到"不函数"错误?
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调用包装在一个函数中,因为它需要使用对象上下文来调用。
根据此示例,它应该是三个参数,而不是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);
您可以看到static rx.observer.greate方法的三个参数。
https://jsfiddle.net/dhkoaufr/1/