2016-10-25 17 views
1

redux-sagaジェネレータで通知を管理するキューハンドラを実装しようとしています。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が派遣された発電機が待機することができるということである。

私の現在の佐賀の実装は簡単なことです。
しかし、最初の通知がキューに入るとすぐに表示したいと思います。何か案は?

答えて

2

私は通知を表示する(キューイングする)のと同じアイデアを持っていましたが、サガはすでにチャネルに関して実装されたソリューションを提供しています。 私は:

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

私はあなたの問題にエレガントなソリューションと信じています。 showNotificationは、通知を実際に表示して、少し前にそれを取り下げるのを待つ別の関数です。

関連する問題