发布订阅模式初次接触 设置变量的方式_

"Hello World, Hello Blog"

Posted by wudimingwo on December 15, 2018
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function stateStorage (initState= {}) {
          	var state = initState;//这里可以防止一些默认值?
          	console.log(state);
          	var list = [];
          	function getState () {
          		return state;
          	}
          	function disPatch (action) {
          		state[action.type] = action.value;
          		list.forEach(function (item,index) {
          			item();//传不了参数?
          		});
          	}
          	function subCribe (handle) {//订阅?
          		list.push(handle);
          	}
          	return {
          	  getState : getState,
          	  disPatch : disPatch,
          	  subCribe : subCribe
          	}
          }    

这是初次接触. 理解不是很好,觉得最大意义在于, 数据更新的时候,会触发相应的函数? 如果按照原来的思路, 我每次处理得到一些数据,每个数据都调用一堆函数. 实际上就不如这种方式.

也许真正应用时我们可以为不同的数据,设立不同的storage?

也就是说,其实可以看成是以数据为中心? 把关于这个数据相关的函数都集合在一起?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function stateStorage (initState) {
          	var state = initState;//这里可以防止一些默认值?
          	console.log(state);
          	var list = [];
                //返回状态 //返回数据
          	function getState () {
          		return state;
          	}
                //修改状态 //修改数据
          	function disPatch (action) {
          		state = action;
          		list.forEach(function (item,index) {// 也许这里可以修改一下,
                                                    //控制执行顺序? 用回调的方式?
          			item(state);//也许这里可以传state?
          		});
          	}
                //订阅
          	function subCribe (handle) {
          		list.push(handle);
          	}
          	return {
          	  getState : getState,
          	  disPatch : disPatch,
          	  subCribe : subCribe
          	}
          }    

或者我们思路上可以想成, 设置变量的正确方式其实是这种? 下面是老师发的图