首页 > 解决方案 > 使用 axios 和 axios cancel token 取消之前的 post 请求

问题描述

我正在使用发布请求从服务器检索一些值,但是当用户注销时,我需要取消先前触发的对服务器的请求。

我正在使用 Axios 库来发出请求axios - npm

我正在触发这样的发布请求:

class CancelService extends InternetService { 
    async triggerPostRequest(params),  {
        const response = await axios.post(`request`, params, {
            headers: {
                Accept: 'application/json',
                'x-access-token': 'abcd',
                'Content-Type': 'application/json',
            },
            cancelToken: this.manager.source.token,
        });
        const jsReponse = response.data;
        if (response.status === 200) {
            jsReponse.success = true;
            return jsReponse;
        }
        return {
            success: 'fail',
            message: response.message,
        };
    }   

当用户要退出应用程序时,我会像这样取消并刷新 axios 令牌。

const cancelService = new CancelService();
cancelService.cancelRequests();
cancelService.initilize();

CancelService 类如下所示:

class CancelService extends InternetService { 
    cancelRequests = () => {
    if (this.manager && this.manager.source) {
        this.manager.source.cancel({ message: 'all request cancelled.' });
    }
};

但是,鉴于当我与下一个用户登录时,前一个请求的结果正在加载,因此似乎没有取消请求。

更新:

我无权更改后端,而且代码是遗留代码,它连续进行一堆调用,我也无法更改。

标签: javascriptreact-nativeaxios

解决方案


推荐阅读