0
私のReact-Nativeアプリでは、ユーザー名とハッシュをサーバーに送信するユーザーログを書き込み、データベースのハッシュとハッシュを比較して結果を返します。私は実装using redux-saga
その:なぜ私のredux-sagaが非同期なのですか
function* fetchUser(action) {
try {
const user = yield call(Api.fetchUser, action);
yield put({type: types.USER_FETCH_SUCCEEDED, user});
} catch (e) {
yield put({type: types.USER_FETCH_FAILED, message: e.message});
}
}
export function* watchFetchUser() {
yield* takeEvery(types.USER_FETCH_REQUESTED, fetchUser);
}
export default function* rootSaga() {
yield fork(watchFetchUser);
// ...
}
そして私はconst user
は、APIからの応答が含まれていますし、yield put({type: types.USER_FETCH_SUCCEEDED, user})
を後に実行することを期待しています。しかし、yield call(Api.fetchUser, action)
の後にuser
はundefined
です。しかしApi.fetchUser
は正しい応答を返します。
私は間違いがどこにあるのかわかりません。なぜconst user = yield call(Api.fetchUser, action)
の結果がundefined
の場合、Api.fetchUser
の後に正しい応答が返されますか?
fetchUser(action) {
const url = `${apiUrls.LOGIN_URL}`;
fetch(url, 'POST', action.user)
.then(response => response.json())
.then(res => res)
}
ありがとうございました! – rel1x