使用场景:一个 list,点击其中的 item 调去接口,在右侧展示接口内容。如果用户快速点击多个 item,则会请求多个接口,所以可以只用中断接口的方式,优化性能,使其在快速点击多个 item 的时候之后执行最后一个,中断上一个。
cancelToken
在 get
请求时候是在第二个参数内写,post
为第三个参数内写
import axios from "axios"; export default { data() { return { xhrCancel: null, }; }, methoods: { fn1() { if (this.xhrCancel) { this.xhrCancel(); this.xhrCancel = null; } let CancelToken = axios.CancelToken; let params = { id: xxx, token: xxxx, }; axios .get("http://xxxxx.com", { params, cancelToken: new CancelToken((c) => { this.xhrCancel = c; }), }) .then( (res) => { }, (err) => { } ); }, fn2() { if (this.xhrCancel) { this.xhrCancel(); this.xhrCancel = null; } let CancelToken = axios.CancelToken; let params = { id: xxx, token: xxxx, }; axios .post("http://xxxxx.com", params, { cancelToken: new CancelToken((c) => { this.xhrCancel = c; }), }) .then( (res) => { }, (err) => { } ); }, }, };
|