Могу ли я использовать генераторы es6 системы redux-saga в качестве прослушивателя onmessage для веб-сокетов или источника событий?

Я пытаюсь заставить Саудовскую Сагу работать сonmessage слушатель. Я не знаю, почему то, что у меня есть, не работает.

У меня есть следующие настройки.

// sagas.js
import { take, put } from 'redux-saga';
import {transactions} from "./actions";

function* foo (txs) {
    console.log("yielding");  // appears in console
    yield put(transactions(txs));  // action *is not* dispatched
    console.log("yielded"); //appears in console
}

const onMessage = (event) => {
  const txs = JSON.parse(event.data);
  const iter = foo(txs);
  iter.next(); // do I really need to do this? 
};

function* getTransactions() {
  while(yield take('APP_LOADED')) {
    const stream = new EventSource(eventSourceUrl);

    stream.onopen = onOpen;
    stream.onmessage = onMessage;
    stream.onerror = onError;

    // this is just testing that `yield put` works 
    yield put(transactions([{baz : 42}])); //this action *is* dispatched
  }
};

КогдаAPP_LOADED действие отправленоgetTransactions вызывается, поток открывается и слушатель onMessage вызывается при получении данных с сервера, но мне не везет в отправке действия при вызовеyield put(transactions(txs)) в генератореfoo.

Может кто-нибудь сказать мне, что я делаю не так?

Ответы на вопрос(1)

Ваш ответ на вопрос