# dispatch 实现
# 使用
类型声明:
subscribe(handler: Function, options?: Object): Function
具体使用:
// vm
const unSubscribe = store.subscribe((mutation, state) => {
console.log('mutation: %s, payload: %s', mutation.type, mutation.payload, state)
})
setTimeout(() => {
unSubscribe()
console.log('unsubscribe')
}, 2000)
# 实现
// 保存所有subscribers
this._subscribers = [];
// 调用一次就存储一次 订阅者的方法,并返回取消订阅函数
// 根据传入的选项,来决定插入的方式
subscribe(handler, options = {}) {
const subs = this._subscribers;
if (subs.indexOf(handler) < 0) {
subs[options.prepend ? 'unshift' : 'push'](handler);
}
return () => {
var index = subs.indexOf(handler);
if (index > -1) {
subs.splice(index, 1);
}
}
}