AbortController中止请求通信[模糊搜索案例]

编程入门 行业动态 更新时间:2024-10-28 00:27:22

AbortController中止请求通信[<a href=https://www.elefans.com/category/jswz/34/1763300.html style=模糊搜索案例]"/>

AbortController中止请求通信[模糊搜索案例]

AbortController中止请求通信[模糊搜索案例]

  • AbortController中止请求通信(模糊搜索案例)

AbortController中止请求通信(模糊搜索案例)

这里用模糊搜索来做示例,这里是调用后端模糊搜索接口
该案例的中止请求可以用于很多地方,比如取消上传/下载文件等

  • 完整代码
<template><div><input v-model="inputValue" @input="getData" type="text"/><div v-for="item in list" :key="item">{{ item }}</div></div>
</template><script>
export default {name: "Index",data() {return {inputValue: '',list: [],controller: null}},methods: {getData() {// this.controller && this.controller.abort(); // 如果存在控制器对象 那么就 在请求完成之前中止它// this.controller = new AbortController; // 创建一个新的控制器对象this.$axios({url: "/api/dirData",method:'GET',params: { value: this.inputValue },// signal: this.controller.signal // 根据需要处理DOM请求通信, 既可以建立通信也可以中止通信}).then(res => {this.list = res.data}).catch(err => {err.code !== "ERR_CANCELED" && console.log(err);})}}
}
</script>

该示例应该渲染的结果是包含1234的模糊搜索,但是结果却是123和1234

问题:由于请求的响应的时间不同,所以快速改变输入框的值会导致界面渲染错误。
解决:如果之前的请求还没有响应成功,那么就中止之前的请求。
解决的代码: 很简单,打开注释掉的 3 行代码即可

解决之后的运行结果,可以看到之前的请求已经被取消了。

如果之前的请求响应很快,在下一次请求之前就已经响应了呢,结果会渲染错吗?

答案是,当然不会,因为最后的请求结果会覆盖之前的结果

更多推荐

AbortController中止请求通信[模糊搜索案例]

本文发布于:2023-12-06 16:48:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668197.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模糊   案例   通信   AbortController

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!