具有redux传奇的进程队列

具有redux传奇的进程队列,redux,generator,redux-saga,Redux,Generator,Redux Saga,我正在尝试使用redux saga生成器实现用于管理通知的队列处理程序 基本上,我需要在通知进入队列时按顺序显示它们 为此,我在redux存储中有一个队列数组,一个要添加到队列的操作qque_通知操作和要删除队列通知的操作SHOW_通知 我当前的saga实现非常简单: export function* watchQueue() { while (true) { const state = yield select() const queue = state

我正在尝试使用redux saga生成器实现用于管理通知的队列处理程序

基本上,我需要在通知进入队列时按顺序显示它们

为此,我在redux存储中有一个
队列
数组,一个要添加到队列的操作
qque_通知
操作和要删除队列通知的操作
SHOW_通知

我当前的saga实现非常简单:

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);
      }
    }
}

当前实现的问题是,当队列为空时,
qque_通知
被调度,生成器可以等待延迟完成。
但是,我想在第一个通知进入队列时立即显示它。有什么想法吗?

我对显示通知(将它们排队)也有同样的想法,但是saga在通道方面提供了已经实现的解决方案。 我有:

我相信这是解决你问题的好办法。
showNotification是另一个功能,它实际上显示通知并在取下它之前等待一段时间。

我对显示通知(将它们排队)有相同的想法,但是saga提供了已经实现的通道解决方案。 我有:

我相信这是解决你问题的好办法。 showNotification是另一个函数,它实际显示通知并在取下它之前等待一段时间

export function * notificationSaga () {                                                  
  const requestChan = yield actionChannel(Notification.request)                          
  while (true) {                                                                         
    const { payload } = yield take(requestChan)                                          
    yield call(showNotification, payload)                                                
  }                                                                                      
}