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的第三个参数传递,您一定是遗漏了什么,请参见此处的工作示例:(需要在底部打开控制台面板)