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