Javascript 雷杜苏传奇。如何将函数作为参数传递给嵌套生成器?

Javascript 雷杜苏传奇。如何将函数作为参数传递给嵌套生成器?,javascript,generator,redux-saga,Javascript,Generator,Redux Saga,因此,我想将一些函数setupSocket作为参数推送到嵌套生成器createSaga中执行,但现在我不明白如何实现它 在父生成器mySaga内,setupSocket正常显示,但在createSaga内没有 import { takeEvery, put, call, take } from 'redux-saga/effects'; import { delay } from 'redux-saga'; import { addMessage, addUser } from '../act

因此,我想将一些函数
setupSocket
作为参数推送到嵌套生成器
createSaga
中执行,但现在我不明白如何实现它

在父生成器
mySaga
内,
setupSocket
正常显示,但在
createSaga
内没有

import { takeEvery, put, call, take } from 'redux-saga/effects'; 
import { delay } from 'redux-saga';
import { addMessage, addUser } from '../actions'
import * as constants from '../constants'

function* createSaga(action, setupSocket) {
    try {
        console.log(setupSocket); // not good
        yield put(addMessage(action.message, action.author, action.photo));
        yield put(addUser(action.author, action.photo));
    } catch (e) { 
        console.log(e) 
    }
};

function* mySaga(setupSocket) {
    console.log(setupSocket); // all good
    yield takeEvery(constants.ADD_DATA, createSaga);
};

export default mySaga;

您可以将其他参数传递给
takeEvery
,这些参数将传递给saga

function* createSaga(setupSocket, action) {
    console.log(setupSocket); // should now be good
    ...
};

function* mySaga(setupSocket) {
    yield takeEvery(constants.ADD_DATA, createSaga, setupSocket);
};
如果传递一些参数,
action
将始终是最后一个参数,因此我必须在
createSaga
saga参数中交换
action
setupSaga
顺序


无效。。在您的情况下,
setupSocket
扮演
action
的角色,并显示其中的所有值。至于
操作
-在这种情况下,它是未加定义的,您将
setupSocket
作为
takeEvery
?@MaxWolfen的第三个参数传递,您一定是遗漏了什么,请参见此处的工作示例:(需要在底部打开控制台面板)