【发布时间】:2019-07-03 05:40:51
【问题描述】:
我正在使用 react-native 和 redux 创建一个应用程序。我的应用程序应该向 firebase rest api 发送请求以取回用户的待办事项。在我的 react-native 应用程序中,我通过在 react-native 组件的连接部分中传递的 redux 函数获得此响应。我想在调用我的函数后立即链接一个 .then 块。
我尝试创建一个承诺并在我的操作中返回它,但它在链接 .then / .catch 时会自动解决一个错误 我也试过在不创建承诺的情况下做同样的事情。
这是我的行动:
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());
}
}
注意:rest api替换为rest api的url 这里是我获取这些数据的地方:
this.setState({refreshing: true});
this.props.retrieveHomework();
this.setState({refreshing: false, firebaseItems : this.props.homework});
this.loadItems(this.state.selectedDay);
(刷新时在函数中调用)
我希望当我在retrieveHomework 之后链接一个.then 块时,then 块会等待函数完成然后运行里面的代码,但这不是正在发生的事情。发生的情况是它要么跳过 then 块,要么抛出 catch 块捕获的错误。
编辑: this.props.retrieveHomework 是一个指向异步操作的函数,因为我使用的是 redux thunk。
【问题讨论】:
-
我是否正确
props.retrieveHomework指的是fetchHomework异步操作调度程序?redux-thunk被使用了吗? -
@skyboyer 是的,你是对的。我会将其添加到我的问题中以进行澄清
标签: reactjs react-native promise