我试图根据状态是否包含数据来触发传奇内的动作。
由于我已经有了从书籍/游戏中获取数据的传闻,我想重用该功能。如果商店里没有这些数据,我只想解雇那些。
到目前为止,这是我的代码......
targetSdkVersion = 27
我该如何解决这个问题?
答案 0 :(得分:1)
put
是非阻塞的,因此您需要修改代码,以便等待新数据,如下所示:
function* getAllSaga(action) {
try {
let books = yield select(Selectors.books);
let games = yield select(Selectors.games);
if(!books.length || !games.length){
yield put({ type: 'GET_BOOKS' });
yield put({ type: 'GET_GAMES' });
yield all([
take('GET_BOOKS_SUCCEEDED'),
take('GET_GAMES_SUCCEEDED')
])
books = yield select(Selectors.books);
games = yield select(Selectors.games);
}
const concated = books.concat(games);
yield put({ type: 'GET_ALL_SUCCEEDED', all: concated });
} catch (err) {
yield put({ type: 'GET_ALL_FAILED', message: err.message });
}
}