Если вам нужно завершить запрос перед вызовом функции dispatch
, вы можете вызвать его в обратном вызове разрешения обещания (then
) следующим образом:
return (dispatch) => {
return axios.post(baseUrl + 'v1/drivers/alldriver', {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(response => {
console.log('jj')
console.log(response)
// here call whatever you want to do after a succesful request
dispatch({
type: FETCH_ALLDRIVER_DATA_START
})
})
.catch(error => {
throw (error);
});
};
Имейте в виду, чтоэто все еще асинхронный вызов, но с кодом beign, выполненным после успешного завершения запроса.
Если вы действительно хотите сделать синхронизирующий вызов, используйте async
и await
, например, так:
return async (dispatch) => {
const response = await axios.post(baseUrl + 'v1/drivers/alldriver', {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
});
dispatch({
type: FETCH_ALLDRIVER_DATA_START
})
};
Хотя я не знаю, как redux
будет вести себя с синхронизирующим вызовом.
Я не уверен, чего вы пытаетесь достичь и зачем вам нуженпросьба быть синхронной.Если ваши компоненты выполняют рендеринг без данных или чего-то подобного, решение должно быть где-то еще, а не в этом вызове.
Надеюсь, это поможет.