Я создаю приложение с использованиемact-native и redux.Мое приложение должно отправить запрос в API Firebase Rest, чтобы вернуть задачи пользователя.В моем приложении-реактиве я получаю этот ответ через функцию приведения, которая передается в соединительную часть компонентов-реактивов.Я бы хотел связать блок .then сразу после вызова своей функции.
Я попытался создать обещание и вернуть его в своем действии, но оно автоматически переходит в ошибку при объединении в цепочку .then / .catch Iтакже пытался сделать то же самое, не создавая обещание.
Вот мое действие:
export const fetchHomework = () => {
return (dispatch, getState) => {
dispatch(uiStartLoading());
dispatch(uiStartFetchingHomework());
dispatch(authGetToken())
.catch(err => {
dispatch(errHandler(err))
})
.then(token => {
const uid = getState().userid;
fetch(restAPI)
.catch(err => {
dispatch(errHandler(err));
})
.then(res => res.json())
.then(response => {
dispatch({
type : 'SET_HOMEWORK_FOR_AGENDA',
homework : response
})
dispatch(uiStopLoading());
dispatch(uiStopFetchingHomework());
})
.catch(err => {
dispatch(errHandler(err));
dispatch(uiStopLoading());
dispatch(uiStopFetchingHomework());
})
})
dispatch(uiStopLoading());
dispatch(uiStopFetchingHomework());
}
}
Примечание: остальные API заменяется URL-адрес остальных API И вот где я получитьэти данные:
this.setState({refreshing: true});
this.props.retrieveHomework();
this.setState({refreshing: false, firebaseItems : this.props.homework});
this.loadItems(this.state.selectedDay);
(это вызывается в функции при обновлении)
Я ожидал, что когда я соединяю блок .then после retrieveHomework, блок then будет ждать, пока функциязакончить, а затем запустить код внутри, но это не то, что происходит.Происходит следующее: он либо пропускает блоки then, либо выдает ошибку, которую перехватывает блок catch.
Редактировать: this.props.retrieveHomework - это функция, которая указывает на асинхронное действие, так как я использую избыточный thunk.