Я отправляю действие из моего кода в логин, которое содержит запрос API для входа и установки переменной currentUser в моем магазине. Сразу после отправки я хотел бы проверить, установлен ли currentUser, однако, поскольку отправка асинхронная, условие if сначала считывает текущего пользователя как "", и мне нужно дважды инициировать событие, чтобы переменная currentUser была прочитана с ожидаемым данные. Я попытался использовать asyn c -await, но проблема не исчезла. Как я могу завершить отправку перед переходом на следующую строку?
Откуда я отправляю:
async function handleSubmit() {
const details = {
"username": userName,
"password": password
}
await props.login( details ) ### This is the dispatch ###
if ( props.currentUser !== "" ) props.handleAuthentication()
}
Это мое действие, которое я вызываю в отправке:
export function login( details ) {
const url = 'user/login'
const requestOptions = {
method: 'POST',
credentials: 'include',
body: JSON.stringify( details )
};
return ( dispatch ) => {
return fetchReq( requestOptions, url ).then( ([response]) => {
if( response.status === RESPONSE.OK ){
dispatch( loginSuccess(details.username) )
}
else{
dispatch( loginError() )
}
} )
}
}
Вспомогательная функция для вышеуказанного действия:
export function fetchReq( options, endpoint ) {
const url = 'api/' + endpoint
return fetch(url, options)
.then( response => Promise.all([response, response.json()]));
}