我正在观看有关RxJS的视频,并且遇到了一些我以前从未见过的TypeScript语法。它是RxJS并不重要,这是一个通用的问题,但我想我只是补充说它是RxJS。
这是对super()
的调用,我不明白:
class MyObservable extends Rx.Observable {
constructor(initialValue) {
super(observer) => {
observer.next(initialValue);
this.observer = observer;
}
}
}
视频继续指出这不是扩展可观察功能的好方法,但这并不是我感兴趣的。我对super()
的电话感兴趣:这里发生了什么?我能想到的最好的是它正在影响基类的构造函数,但我不确定。任何人都可以澄清吗?
答案 0 :(得分:2)
这绝对是一个错字。 constructor for Rx.Observable接受一个函数参数,它本身接受一个订阅者 - 一个带有' next'的对象。 (由您的代码确认),以及'错误' /'完成'方法,虽然在上面的代码中没有使用它们。这几乎可以肯定是
class MyObservable extends Rx.Observable {
constructor(initialValue) {
super((observer) => {
observer.next(initialValue);
this.observer = observer;
});
}
}
这也可以从视频描述的内容,扩展Rx功能 - 您有效地捕获'在将this.observer
设置为Rx.Observable
并让onload = function() {
document.getElementById('myCheck').addEventListener('change', function(e) {
e.target.disabled = (getCookie('myCheck') == 1);
}
document.getElementById('myCheck').checked = (getCookie('myCheck') == 1);
}
继续执行其操作之前,向观察者传递一个额外的初始值。