我正在尝试使用redux-saga生成器实现管理通知的队列处理程序。
基本上,我需要在他们进入队列时连续显示通知。
为此,我在redux商店中有一个queue
数组,一个动作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);
}
}
}
当前实现的问题是,当队列为空时,调度QUQUE_NOTIFICATION
生成器可以等待延迟完成。
但是,我想尽快显示第一个通知进入队列。有什么想法吗?
答案 0 :(得分:3)
我有同样的想法来显示通知(排队)但是saga提供了已经实现的通道解决方案。 我有:
export function * notificationSaga () {
const requestChan = yield actionChannel(Notification.request)
while (true) {
const { payload } = yield take(requestChan)
yield call(showNotification, payload)
}
}
我认为这是对您的问题的优雅解决方案。 showNotification是另一个实际显示通知的函数,在关闭之前会等待一段时间。