取消ajax请求后,后端同样会接收到请求,那取消的意义是什么呢?
取消ajax请求的意义是什么,有哪些应用场景
回答:
有意义啊。
比如 SPA 里路由已经切走了,可上一个页面的请求还未得到响应,此时就可以 abort 掉以释放系统资源 ———— 反正等它也没有用了。
再比如浏览器都有同一域名下的请求并发数量限制,如果你有某个请求耗时特别长、且产生了堆积,那么势必会连带造成后面的请求都延误,此时可以有选择性的中止某些请求。
又比如搜索框场景下,输入后自动发起搜索请求,但输入可能会比较频繁。你可能会说,那我用 debounce 做个防抖不就行了么?好想法,但有一个问题,你打算 debounce 间隔设置成多久?比如你设置成了 300ms,但如果你此时的网络环境因为种种原因、并不能 300ms 内执行完一次请求呢?是不是 300ms 一到、前一个请求还没回来、你又可以发起下一个请求了?其实此时就可以主动取消上一个请求的,这样就可以避免最后回来两个响应,造成数据错乱等问题了。当然,这种场景解法不唯一,很多方案都可以满足需求;而且即便有取消请求,也是同样要配合 debounce 工作的,二者缺一不可。
P.S. 其实你设置 timeout 本身就已经是一种被动取消机制了,大部分场景确实不需要主动取消。当然了,要是没有 timeout、也没有取消,你就只能一直等了,直到操作系统本身的 Socket 连接超时。
回答:
取消本身就是前端的概念,发出去的请求后端收到之后无法取消,前端的取消只是说不管这个请求的后续结果了,不处理超时不处理错误了,界面也不会再针对这个请求做交互上的处理了,前端的取消更多的意义在交互上
回答:
【取消请求】这个说法不对,应该叫【忽略响应】。
因为发送请求这件事不是异步的,接收响应才是异步的。你调用完 AJAX 函数之后请求就已经发出去了。
回答:
取消的本身就是前端的呀。浏览器发起,服务器接收,服务器处理,服务器响应,浏览器接收,一共五个环节吧,你得看看你现在处于什么阶段了。
- 对于这个结果你已经不需要了。那么回调也就不用执行了,就可以释放掉了。
- 如果是在浏览器发起阶段就。服务器就收不到了。
- 浏览器的连接数是有限制的。http2 就没事了,但是 http1 的话就会阻塞
回答:
举一个很常见的例子:页面A发起请求,请求成功后toast并跳转B页面,但用户在请求期间已经切换到了C页面。
在SPA架构中,A页面的请求回调仍然会执行,如果不做任何处理就会影响到用户体验,而请求取消就是最简单的处理办法
回答:
1:比如你是一个API工具,比如postman那些,如果API可以取消的话,就不用一直等待到超时了,直接取消就去做其他事就好了。
回答:
https://www.cnblogs.com/sheng...
回答:
说中断连接应该就好理解了,不长时间占用服务器资源。
回答:
举个[栗子]。
上传一个10MB的文件,上传了一半想取消,取消ajax就ok了。
回答:
在 HTTP1 中浏览器限制了同一个域名下的请求数量(Chrome下一般是六个),当在请求很多资源的时候,由于队头阻塞,当浏览器达到最大请求数量时,剩余的资源需等待当前的六个请求完成后才能发起请求。
请求限制是一个值得注意的点,但是通常取消请求会应用在用户操作切换场景时,当用户点击一个进入新的场景,旧的仍在请求的就有主动取消掉,避免资源占用以及回调函数里一些节点已经销毁了还要继续跑的异常场景。
以上是 取消ajax请求后,后端同样会接收到请求,那取消的意义是什么呢? 的全部内容, 来源链接: utcz.com/p/937007.html