介绍
Pull和Push是两种数据流的传递方式,他们决定了数据如何从生产者传递到消费者。
Pull
Pull是拉模型,也就是消费者主动向生产者请求数据,消费者是主动的一方。在JavaScript中,所有的函数都是Pull模型的,函数相当于数据的生产者,函数调用者相当于数据的消费者。调用这个函数,就是在请求数据。
下面的代码中num.reduce函数用来求数组的和,const sum = nums.reduce(...)
调用函数请求数据。
1 | const nums = [1, 2, 3, 4, 5]; |
Push
Push是推模型,由数据的生产者主动向外推送数据,生产者是主动的一方。在JavaScript中,Promise
就是Push模型的,与函数不同,Promise决定什么时候发送数据。
下面代码中的p.then(console)
会在Promise resolve之后执行,Promise决定了何时发送数据。
1 | const p = new Promise((resolve) => { |
RxJS中的Observable也是推模型的,Observable决定了何时发送数据。