redux RTK创建侦听器中间件 Saga 频道

xt0899hw  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(165)

我在我的项目中使用RTK createListenerMiddleware,我想知道是否有一个像通道模式一样的Redux-saga配方。我指的是这个Saga模式:

import { channel } from 'redux-saga'
import { take, fork, ... } from 'redux-saga/effects'

function* watchRequests() {
  // create a channel to queue incoming requests
  const chan = yield call(channel)

  // create 3 worker 'threads'
  for (var i = 0; i < 3; i++) {
    yield fork(handleRequest, chan)
  }

  while (true) {
    const {payload} = yield take('REQUEST')
    yield put(chan, payload)
  }
}

function* handleRequest(chan) {
  while (true) {
    const payload = yield take(chan)
    // process the request
  }
}

https://redux-saga.js.org/docs/advanced/Channels/#using-channels-to-communicate-between-sagas

2w2cym1i

2w2cym1i1#

我是Redux的维护者和I created the listener middleware
我们设计了监听器中间件来做 * 几乎 * 所有你可以用传奇做的事情:监听动作、暂停、取消、甚至分叉“子任务”。
然而,我们故意没有重新实现saga所能做的一切,以保存复杂性和捆绑包的大小。通道是一个saga的功能,我们选择不在侦听器中间件中模仿。
您自己也可以在某种程度上做一些类似的事情,但是侦听器中间件API中绝对没有类似于通道的内置内容。

相关问题