我听说过buffer
。好像window
类似于缓冲区。
他们之间有什么区别?为什么它被称为“窗口”??
答案 0 :(得分:3)
缓冲区是Window的专业化。
窗口会立即通知您新窗口,以及观察将在该窗口中显示的值的observable。
相比之下,Buffer不会立即通知您新窗口。相反,它在内部收集窗口中的项目。窗口完成后,Buffer将发送一个包含窗口中所有项目的数组的通知。
从概念上讲,您可以使用buffer
来编写window
,如下所示:
Rx.Observable.prototype.buffer = function () {
return this.window
.apply(this, arguments)
.flatMap(function (w) { return w.toArray(); });
};
至于为什么它被称为“窗口”...除非Rx作者回答,否则任何答案都将纯粹是推测性的。 窗口是一个术语,通常用于表示许多学科的时间间隔,包括软件开发和信号处理。