通过回调与Promise处理多种结果类型?

时间:2018-11-04 14:58:47

标签: javascript

假设您请求登录 ,您可能被授权,被拒绝或出现错误。

函数实现:

const signIn = (email, password, callback) => async dispatch => {
    try {
        const { status, data } = await axios.post('/users/sign_in', { user: { email, password } });

        if (!data.id) {
            return callback.error('Something went wrong');
        }

        dispatch(fetchUser());

        callback.success(data);
    } catch (e) {

        if (e.response.status === 401) {
            callback.invalid(e.message, e);
        } else {
            callback.error(e.message, e);
        }
    }
};

致电:

signIn(email, password, {
    success(data) {
        console.log('success', data);
    },
    invalid(message, e) {
        console.log('invalid', message);
    },
    error(message, e) {
        console.log('error', message);
    }
});

如您所见,它传递了具有不同方法的回调对象。

您能推荐一个更好的选择吗,也许在您有确切模型的地方使用 Promise

0 个答案:

没有答案