RxJS 中的“窗口”是什么意思?

yay*_*aya 5 rxjs

我听说过buffer. 似乎window类似于缓冲区。它们之间有什么区别?为什么它被称为“窗口”??

Bra*_*don 5

Buffer 是 Window 的特化。

Window 会立即通知您新窗口,以及一个 observable 来观察将在该窗口中的值。

相比之下,Buffer 不会立即通知您有新窗口。相反,它在内部收集窗口中的项目。当窗口完成时,Buffer 将发送一个通知,其中包含一个包含窗口中所有项目的数组。

从概念上讲,你可以写buffer通过使用window像这样:

Rx.Observable.prototype.buffer = function () {
    return this.window
        .apply(this, arguments)
        .flatMap(function (w) { return w.toArray(); });
};
Run Code Online (Sandbox Code Playgroud)

至于为什么它被称为“窗口”……除非 Rx 作者来回答,否则任何答案都将纯属推测。 窗口是一个术语,通常用于表示许多学科中的时间间隔,包括软件开发和信号处理。