2016-12-20 5 views
0

action1が複数回送信された場合、これはブロックされていないと見なされますか?は、ブロックされていないコールとみなされます。

function* nonBlockingSaga() { 
    while (true) { 
     yield take('action1'); 
     yield take('action2'); 
     yield take('action3'); 
    } 
} 
+0

私は彼らがチートシートセクションを追加したことを発見しました[https://github.com/redux-saga/redux-saga/tree/master/docs/api#blocking--non-blocking] – epikhighs

答えて

1

はい、あなたはaction1を派遣している場合、サガはtake('action2')によってブロックされ、サガは周りのループまで、あなたはどんなaction1アクションを欠場します。この問題を回避/解決するには、action channelを使用します。アクションチャネルを使用すると、あなたの佐賀がそれらを受け取る準備ができるまで、アクションをバッファすることができます。

だから例では、これはにつながる:

function* nonBlockingSaga() { 
    const channel1 = yield actionChannel('action1'); 
    const channel2 = yield actionChannel('action2'); 
    const channel3 = yield actionChannel('action3'); 
    while (true) { 
    yield take(channel1); 
    yield take(channel2); 
    yield take(channel3); 
    } 
} 

あなたがアクションのいずれかを見逃すことはありません。この道を。

関連する問題