Кажется, что в rxjs 4.x, Rx.Observable.fromCallback принимает область действия как второй параметр, но в 5.0 этот метод изменен на Rx.Observable.bindCallback и не принять параметр области. Как добавить параметр scope в bindCallback. Например, в ES6.Rx.Observable.bindCallback с областью действия в rxjs
class Test {
constructor(input) {
this.input = input;
}
callback(cb) {
return cb(this.input);
}
rx() {
// this works on rx 4.x
// var observable = Rx.Observable.fromCallback(this.callback, this)();
// this doesn't work, because this.callback function doesn't use original this, so cannot get this.input
var observable = Rx.Observable.bindCallback(this.callback)();
// Work around: Rx.Observable.bindCallback(this.callback)();
// var me = this;
// var observable = Rx.Observable.bindCallback((cb) => {me.callback(cb);})();
observable.subscribe(
input => console.log('get data => ' + input),
err => console.log('get error =>' + err),
() => console.log('complete')
);
}
}
new Test(100).rx();
Это еще одна работа вокруг. На самом деле вы переписываете исходную функцию 'callback' через bind. Другими словами, если у меня есть несколько функций для использования в 'bindCallback', я должен привязать это к тем функциям в конструкторе. –