Имея сценарий, в котором я получаю данные из обратного вызова, т.е. Dispatcher.on ("get_service"). Теперь я хочу использовать ответ / данные, поступающие от обратного вызова, чтобы заполнить его в функции watchDispatcherChannel. Попробовал приведенный ниже код
Моя конечная цель - использовать ответ от функции обратного вызова и использовать метод put put (действие) для его передачи через редукторы.
import { call, put, take, takeEvery } from 'redux-saga/effects';
import { channel } from 'redux-saga';
import {
GET_SERVICE_START,
GET_SERVICE_SUCCESS
} from './actions';
import ws from '../../websockets';
import Dispatcher from '../../dispatcher';
const dispatcherChannel = channel();
export function* getService(options) {
let payload = {
username: options.username,
password:options.password
};
ws.send(payload);
Dispatcher.on("get_services", (data) => {
dispatcherChannel.put({
type: GET_SERVICE_SUCCESS,
data});
})
}
export function* watchDispatcherChannel() {
while (true) {
const action = yield take(dispatcherChannel)
yield put(action)
}
}
export default function* getServiceData() {
yield takeEvery(GET_SERVICE_START, getService);
yield takeEvery(dispatcherChannel, watchDispatcherChannel);
}