在拦截器中取消HTTP响应不工作/内存泄漏

时间:2018-02-06 16:22:50

标签: javascript node.js http axios

  • 我使用Axios和我自己的包装器代码发出HTTP请求。

  • 拦截所有回复并将其打印到控制台。

  • 所有回复都包含' data.status '属性,我将其用作简单检查以查看是否一切正常。

问题

第1步:访问/主页

enter image description here

  • 只有一个HTTP请求来检查权限。响应将打印到控制台。

第2步:访问/员工

enter image description here

  • 初始检查权限传递并打印响应。
  • 发出第二个HTTP请求以从数据库获取信息。这有意设置为失败。
  • data.status == false,仍然会打印响应,但会激活取消代码。

第3步:访问/主页

enter image description here

  • 由于某种原因,两个响应被打印到控制台。应该只有一个!

代码

axios.interceptors.response.use(
    function(response) {
        console.log(response);
        if(!response.data.status){
          throw new axios.Cancel(response.data.message);
        }
        return response;
    },
    function(error) {
        cancel();
        window.Event.fire('addError', "Error "+error.message);
        return Promise.reject(error);
   }
);

post(url, data, successCb = null) {
    axios({
      method: 'post',
      url: domain+url,
      data: data,
      cancelToken: new CancelToken(function executor(c) { cancel = c; })
    })
    .then(successCb)
    .catch(function(err){
      if(axios.isCancel(err)){ console.log('im canceled'); }
      else{ console.log('im server response error'); }
    });
}

0 个答案:

没有答案