m1=function(next){
return function(action){
console.log("m1")
next(action)
}
}
m2=function(next){
return function(action){
console.log("m2")
next(action)
}
}
dispatch=function(action){
console.log(action)
return action
}
m1 m2代表中間件绿淋,手寫調(diào)用dispatch方法即
m1(m2(dispatch))({action:1})
通過(guò)applyMiddle方法實(shí)現(xiàn)原理
applayMiddle=function(...args){
args.unshift(dispatch)
return args.reduce(function(dispatch,item){
return item(dispatch)
})
}
所以增強(qiáng)的dispatch相當(dāng)于
增強(qiáng)的dispatch==applayMiddle(m1,m2)