dva model的watcher,takeLatest,throttle,takeEvery使用介绍

官方的一些介绍

  • effect说明
    dva model的watcher,takeLatest,throttle,takeEvery使用介绍
  • 使用说明
    dva model的watcher,takeLatest,throttle,takeEvery使用介绍
    这几个值是用来干嘛的呢?

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

  • 定义方式为
    dva model的watcher,takeLatest,throttle,takeEvery使用介绍

throttle(消抖)

在发起到 Store 并且匹配 pattern 的一个 action 上派生一个 saga。 它在派生一次任务之后,仍然将新传入的 action 接收到底层的 buffer 中,至多保留(最近的)一个。但与此同时,它在 ms 毫秒内将暂停派生新的任务 —— 这也就是它被命名为节流阀(throttle)的原因。其用途,是在处理任务时,无视给定的时长内新传入的 action

这个和lodash 里面的throttle函数类似,节流函数,如果一个action连续被dispatch,那么他会每隔定义时间执行一次

  • 定义方式为
    dva model的watcher,takeLatest,throttle,takeEvery使用介绍

watcher

传入的任务函数就是一个watcher直接fork就好

简单理解为在初始化的执行一次,后续的dispatch也不会触发

  • 使用方式
    dva model的watcher,takeLatest,throttle,takeEvery使用介绍

参考资料

  1. dva源码解析(一)
  2. redux-saga中文api文档
  3. Dva 源码解析
  4. dva effects.test.js

相关文章: