我正试图通过END效果将我的应用程序转到服务器端渲染(有关https://github.com/redux-saga/redux-saga/issues/255的详细信息,并解释为什么这很棘手)。
我的数据依赖于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事件被触发只终止那些已经开始的效果,并且因为我的第二个效果在我第一次回来之前不会被触发,所以它不包括在{ {1}}承诺。
通过不工作我的意思是动作runSaga().done
被触发并且JWT_REQUEST_SUCCESS
承诺运行。但是我在console.log中的消息没有被触发。
我认为通过在同一个函数中同时使用这两个请求是可能的,但我试图将令牌auth部分抽象出来。
以任何方式都不可能吗?
真的卡住了。
答案 0 :(得分:1)