2017-10-04 10 views
1

내 애플리케이션을 END 효과 (자세한 내용은 https://github.com/redux-saga/redux-saga/issues/255에 대한 자세한 내용과 함께 매우 까다로운 이유)를 통해 서버 측 렌더링에 가져 오려고합니다.redux-saga - 다른쪽에 1 개의 비동기가 종속 된 서버 쪽 렌더링

내 데이터는 비동기 요청 2 개 (getJwtToken -> (with token data) FetchItem -> now render)를 사용합니다.

전혀 가능합니까?

나는 채널 (여기서는 https://redux-saga.js.org/docs/advanced/Channels.html)을 보는데 시간을 보냈으며 어떤 변형을 할 수 없었습니다.

내 사가는 다음과 같이 (LOAD_USER_PAGE 처음에 해고)

function* loadUserPage() { 
    yield put({type: 'JWT_REQUEST'}) 
    const { response } = yield call(fetchJwtToken) 
    if (response) { 
    yield put({type: 'JWT_REQUEST_SUCCESS', payload: response}) 
    } 
} 

function* fetchItem() { 
    console.log('NEVER GETS HERE') 
} 

function* watchLoadPage() { 
    yield takeLatest('LOAD_USER_PAGE', loadUserPage); 
} 

function* watchFetchItem() { 
    yield takeLatest('JWT_REQUEST_SUCCESS', fetchItem); 
} 

export default function* rootSaga() { 
    yield all([ 
    fork(watchLoadPage) 
    fork(watchFetchItem) 
    ]) 
} 
내가 때문에 시작 만 효과를 종료 발사 END 이벤트 (작동하지 않는 이유를 이해 생각

, 이후 보이는 내 2 차 효과를 처음 할 때까지 해고되지 않습니다 그것이 runSaga().done 약속에 포함되지 않은, 다시입니다.

으로 내가 작업 JWT_REQUEST_SUCCESS 해고 의미 작동하지 않고 runSaga.done 약속은 실행됩니다. 그러나 CONSOLE.LOG 내 메시지가 해고되지 않았습니다.

같은 기능으로 두 요청을 모두 가질 수 있다고 생각하지만 토큰 승인 부분을 추상화하려고합니다.

어떤 방식으로도 가능하지 않습니까?

정말 붙어 있습니다.

+0

이 코드가 지금 실행되면 어떻게됩니까? "작동하지 않는 것"보다 자세한 내용이 도움이 될 것입니다. – stone

+0

@skypecakes 죄송합니다 + 업데이트를 자세히 설명합니다. 그래서'JWT_REQUEST_SUCCESS' 액션이 시작되고'runSaga.done' 약속이 실행됩니다. 그러나 'console.log'에있는 내 메시지는 실행되지 않습니다. 나는 동일한 기능으로 두 요청을 모두 가질 수 있다고 생각하지만 토큰 승인 부분을 추상화하려고합니다. 나는 그것이 의미가 있기를 희망한다. –

답변