印趣云课堂-网校系统服务商

手机APP

微信公众号

javascript - axios拦截器中误触发送相同请求时取消上一次请求 云课堂问答

提问者xiaoyuer

添加回答

3回答
Meng122421
6年前Meng122421

axios 不太熟,我用的这种方式,可以试试看

// 声明全局变量 var timeoutID  function eClick (){ clearTimeout(timeoutID) timeoutID = setTimeout(functiono(){ }, 100);}

在0.1秒内触发多次 eClick 事件只会触发一次

赞同10个回复
郑海玲
6年前郑海玲

正常思路应该是阻止第二次请求。因为请求一旦发出,后端必然会收到并且响应,发送2次,后端就响应2次。
修改数据的操作不应该请求2次,会导致数据错乱;而不修改数据的操作也不应该请求2次,因为造成服务器资源的不必要开销。

但是还是有一些时候我们需要清除一些请求,比如页面切换过程中上一个页面的残留请求,会导致影响当前页面的展示,这种情况可以使用前端取消。
前端取消仅仅是前端请求的promise直接调用reject(即走请求错误,后续请求回来不管结果是什么都不加处理)。
这里需要确定你需要的是哪种效果。
如果是第一种,那可以设置一个标记比如一个变量requestLock为true,请求回来或者请求错误,则恢复标记为false,标记存在,则不能发起请求。
如果你确实需要前端取消请求的响应,那你可以使用axios.CancelToken:
查看文档

clipboard.png

赞同00个回复
2米六啊
6年前2米六啊

/a/11...

赞同00个回复

相关问题

相关分类

请选择你的考试意向可选择1个考试 随时调整

test

外语考试

考研学历

教师公考

医药卫生

职业资格

财会经济

建筑工程

趣味测试

考研

IT

医疗教学

外语教学

数理逻辑

文学

点击查看更多考试 >

选好了