노드 6.2.1에서 다음 코드를 실행하려고합니다. 1, 2,로 기록한 다음 연결됩니다. 왜 선회 수확 ('TEST')에 대한 실행을 계속하지 않는지 나는 undestand 수 없습니다 ... 다른 사가 완료 및 로그 2하지만 제어가 rootSaga로 반환되지 않습니다 것 같습니다. 누구든지 제발 도와 주실 래요?Redux-saga가 yield call에 걸렸습니다.
const {runSaga, delay} = require('redux-saga');
const {take, put, call} = require('redux-saga/effects');
function* anotherSaga() {
yield call(delay, 1000);
console.log(2);
}
function* rootSaga() {
while(true) {
console.log(1);
yield call(anotherSaga);
console.log(3);
const action = yield take('TEST');
console.log(4);
yield put(action);
}
}
runSaga(
rootSaga(),
{
subscribe(callback) {
return setInterval(() => (callback({type: 'TEST'})), 1000);
},
dispatch(action) {
console.log(action);
},
getState() {}
}
);
업데이트 : runSaga없이하지만 코드는 다음과 같이이는 subscribe
함수가 올바른 값을 반환하지 않습니다 때문입니다 것 같습니다 로깅 1,2,3,4
const {createStore, applyMiddleware} = require('redux');
const createSagaMiddleware = require('redux-saga').default;
const {delay} = require('redux-saga');
const {take, put, call} = require('redux-saga/effects');
function* anotherSaga() {
yield call(delay, 2000);
console.log(2);
}
function* rootSaga() {
while(true) {
console.log(1);
yield call(anotherSaga);
console.log(3);
const action = yield take('TEST');
console.log(4);
yield put(action);
console.log('---')
}
}
const rootReducer = (state, action) => {
if (state === undefined) {
return {};
}
return state;
}
const sagaMiddleware = createSagaMiddleware();
const store = createStore(rootReducer, {}, applyMiddleware(sagaMiddleware));
sagaMiddleware.run(rootSaga);
setInterval(() => (store.dispatch({type: 'TEST'})), 1000);
runSaga없이이 코드를 사용해 보셨습니까? – kuy
@kuy 시도했는데 예상대로 작동합니다. 주요 주제의 코드를 확인하십시오. –