Javascript 即使在成功后,也要做出承诺

Javascript 即使在成功后,也要做出承诺,javascript,reactjs,Javascript,Reactjs,我通常是一个有角度的开发者,在react工作。如果这个问题看起来很简单,请原谅 我有一个简单的承诺 return axios(`team/${this.state.teamId}/player`, this.state) .then((response) => { console.log('formSubmit success'); this.store.dispatch({ type

我通常是一个有角度的开发者,在react工作。如果这个问题看起来很简单,请原谅

我有一个简单的承诺

    return axios(`team/${this.state.teamId}/player`, this.state)
        .then((response) => {
            console.log('formSubmit success');

            this.store.dispatch({
                type:       constants.PLAYER_UPDATE,
                payload:    response.data.user,
            });
            return false;

        })
        .catch((error) => {
            console.error('Error', error.response.data);
            this.setState({
                saveStatus: error.response.data.message
            });
            return Promise.reject(error)
        });
在“网络”选项卡中,我可以看到URL被很好地获取。 在控制台中打印时,调用
store.dispatch

但同时它在catch语句中调用代码。 我的控制台输出是

formSubmit success                    Player.js:127
Store BEFORE | PLAYER_UPDATE          Store.js:76

Uncaught (in promise) TypeError: Cannot read property 'data' of undefined
at Player.js:135
当一切都是成功的时候,它为什么要追求CATCH()呢?我甚至在this.store.dispatch的末尾添加了return语句


请提供帮助。

函数将捕获
then
中出现的任何错误,如果您只想捕获promise中的错误,您可能需要使用
then
函数中的第二个回调。你应该这样做:

return axios.get(`endpoint`)
   .then(successCallback, errorCallback);
或者,对你来说

return axios(`team/${this.state.teamId}/player`, this.state)
        .then((response) => {
            console.log('formSubmit success');

            this.store.dispatch({
                type:       constants.PLAYER_UPDATE,
                payload:    response.data.user,
            });
            return false;

        }, (error) => {
            console.error('Error', error.response.data);
            this.setState({
                saveStatus: error.response.data.message
            });
            return Promise.reject(error)
        });

可能是我的支架弄乱了,我没注意到。但那是我的意图。谢谢你的回复。让我更改代码并尝试一下。如何使用wait实现成功和失败回调?我想处理401和403