dva model的watcher,takeLatest,throttle,takeEvery使用介绍
官方的一些介绍
- effect说明
- 使用说明
这几个值是用来干嘛的呢?
takeEvery
在发起(dispatch)到 Store 并且匹配 pattern 的每一个 action 上派生一个 saga
解释一下就是,在你dispatch 一个effects action的时候,他会去找到你的effect里面定义的对应的函数,每dispatch一次就执行一次, 这是个默认值所有的以gernerate function 定义的effects都是默认type都是takeEvery
takeLatest
在发起到 Store 并且匹配 pattern 的每一个 action 上派生一个 saga。并自动取消之前所有已经启动但仍在执行中的 saga 任务。
这个就是说如果你多次dispatch同一个action的话,在dispatch的时候,saga任务队列里面有这个action就会取消掉上次的action,开始执行本次的action
- 定义方式为
throttle(消抖)
在发起到 Store 并且匹配 pattern 的一个 action 上派生一个 saga。 它在派生一次任务之后,仍然将新传入的 action 接收到底层的 buffer 中,至多保留(最近的)一个。但与此同时,它在 ms 毫秒内将暂停派生新的任务 —— 这也就是它被命名为节流阀(throttle)的原因。其用途,是在处理任务时,无视给定的时长内新传入的 action
这个和lodash 里面的throttle函数类似,节流函数,如果一个action连续被dispatch,那么他会每隔定义时间执行一次
- 定义方式为
watcher
传入的任务函数就是一个watcher直接fork就好
简单理解为在初始化的执行一次,后续的dispatch也不会触发
- 使用方式