如何使用async / await代替promise(.then)

时间:2019-03-26 16:22:49

标签: es6-promise

我正在尝试在项目中使用async / await而不是.then,但这会引发错误

这是我的代码:

export const registerUser = (userData, history) => async dispatch => {
    axios
        .post('/api/users/register', userData)
        await (res => history.push('/login'))
        .catch(err => dispatch({
                type: GET_ERRORS,
                payload: err.response.data
            })
        );
};

这是我回来的错误

未处理的拒绝(TypeError):(中间值)。catch不是函数

1 个答案:

答案 0 :(得分:3)

await不是用then()代替的功能。它是一个关键字,您将其放在可作为promise解析的表达式之前。使用它时,您还可以用常规的try / catch替换catch()方法。

export const registerUser = (userData, history) => async dispatch => {
    try {
        await axios.post('/api/users/register', userData);
        history.push('/login');
    } catch (err) {
        dispatch({
            type: GET_ERRORS,
            payload: err.response.data
        })
    );
};