问一个比较蠢的问题哈:JS 里涉及到请求 api 为什么没有同步的?
比如 xhr、fetch 等这类 api 肯定都是异步。
let data = ""
const result = await fetcher("google.com")
data = result
上面代码里面,为了能正确的获取 result,因此加入了 await,使用异步以实现需求
let data = ""
const result = syncFetcher("google.com")
data = result
所以是否存在同步的请求 api 呢?
不存在的话,是什么原因呢,是害怕出现「请求不响应」等这类问题导致 Bug 吗
过去,包括现在,XHR 仍然是有设置为同步的参数的,XMLHttpRequest.open() 的第三个参数,设置为 false ,即可使请求变成同步的。
因为设置成同步后,会直接导致用户浏览器挂起,有的浏览器,鼠标还会显示成一个操作中的图标。
在这期间,页面将不能响应用户的其他操作,如点击等等,如果遇到网络较差的情况下,那只会更糟糕。
正因为如此,这个现在已经被标记为弃用了,后续可能会移除这个的支持。
XMLHttpRequest.open() - Web API 接口参考 | MDN