Dzi*_*mid 1 generator redux redux-saga
我正在尝试使用 redux-saga 生成器实现一个队列处理程序来管理通知。
基本上,我需要在通知进入队列时按顺序显示通知。
为此,我queue在 redux 存储中有一个数组,一个QUQUE_NOTIFICATION添加到队列和SHOW_NOTIFICATION删除队列通知的操作。
我目前的传奇实现就是这么简单:
export function* watchQueue() {
while (true) {
const state = yield select()
const queue = state.queue
if (queue.length > 0) {
yield put({ action: 'SHOW_NOTIFICATION', queue[0])
}
yield call(delay, 5000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当前实现的问题在于,当队列为空时QUQUE_NOTIFICATION,调度生成器可能会等待延迟完成。
但是,我想在它进入队列后立即显示第一个通知。有任何想法吗?
我对显示通知(将它们排队)也有同样的想法,但是 saga 提供了已经实施的渠道解决方案。我有:
export function * notificationSaga () {
const requestChan = yield actionChannel(Notification.request)
while (true) {
const { payload } = yield take(requestChan)
yield call(showNotification, payload)
}
}
Run Code Online (Sandbox Code Playgroud)
我相信这是您问题的优雅解决方案。showNotification 是另一个功能,它实际上显示通知并在将其关闭之前稍等片刻。
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |