ajax请求不能在主线程...这什么意思(Synchronous XMLHttpRequest on ...)

在chrome浏览器里面找到的,请原谅我这个新手,最近google崩了,baidu不给力,只好来社区了...

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

阅读 136.8k
4 个回答

这里面有2个概念。
一个是Ajax请求分异步和同步2种模式。如果请求是同步的,在请求返回之前线程会一直阻塞,如果请求是在主线程中发起的,那就会造成整个浏览器阻塞。
另外一个就是主线程。这段话应该是针对HTML5说的,因为在HTML5以前,JavaScript是完全的单线程方式,主线程之外不存在其他线程。但在HTML5中增加了Worker对象,每个Worker运行在一个独立的线程中,Worker线程被阻塞一般是不会影响主线程和浏览器的。因此,如果非要使用同步的Ajax(这种情况应该很少见),那就放到Worker线程中吧,千万千万不要放到主线程里。

注意Synchronous,同步的ajax请求会造成整个页面阻塞,等待ajax请求返回,因此在主线程运行会导致用户体验问题(detrimental effects to the end user's experience)

@Terry_139061 如果我用异步的话,我不能及时的将json对象赋给全局变量啊,这要如何解决?

图片描述

新手上路,请多包涵

可以在子线程里取值,再利用消息传递机制使用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题