RxJS Pull 模式 与 Push 模式有什么区别?
Pull 和 Push 是数据生产者和数据的消费者两种不同的交流方式。
什么是 Pull?
在 "拉" 体系中,数据的消费者决定何时从数据生产者那里获取数据,而生产者自身并不会意识到什么时候数据将会被发送给消费者。
每一个 JavaScript 函数都是一个 拉 体系,函数是数据的生产者,调用函数的代码通过 拉出 一个单一的返回值来消费该数据。
const add = (a, b) => a + b;
let sum = add(3, 4);
ES6 介绍了 iterator 迭代器 和 Generator 生成器 — 另一种 "拉" 体系,调用 iterator.next()
的代码是消费者,可从中拉取多个值。
什么是 Push?
在 推 体系中,数据的生产者决定何时发送数据给消费者,消费者不会在接收数据之前意识到它将要接收这个数据。
Promise (承诺) 是当今 JS 中最常见的 推 体系,一个 Promise (数据的生产者) 发送一个 resolved value (成功状态的值) 来执行一个回调(数据消费者),但是不同于函数的地方的是:Promise 决定着何时数据才被推送至这个回调函数。
RxJS 引入了 Observables (可观察对象),一个全新的 推 体系。一个可观察对象是一个产生多值的生产者,当产生新数据的时候,会主动 "推送给" Observer (观察者)。
生产者 | 消费者 | |
---|---|---|
pull 拉 | 被请求的时候产生数据 | 决定何时请求数据 |
push 推 | 按自己的节奏生产数据 | 对接收的数据进行处理 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论