while循环会阻塞ajax发送请求吗?

1.看这段代码 vuejs的代码,在mounted里面执行下面的代码

mounted(){
            console.log('axios send',new Date().getTime())
            axios.get('http://localhost:3000/api?a=2')
            var a=10000000000;
            console.log('while exec',new Date().getTime())
            while(a>0){
                a--;
            }
            console.log('while finish',new Date().getTime())
        },

我在后台服务器打断点接收请求,发现收到请求的时间是在while finish这段代码执行的时候,也就是while循环执行完才开始发送的请求,为什么while循环阻塞了浏览器的ajax线程发送请求呢?这俩不应该是互不影响吗?

阅读 3.7k
2 个回答

经过自己测试,发现如果不用axios发送的话请求是在正确的时机发送的,也就是while执行前就发送了,而因为axios用了promise来包裹xhr请求,所以这个任务被放到了微任务队列,因为微任务队列必须等到所有同步任务执行完才会执行,所以.....请求延后了

会不会因为,while运算时间<请求网络传输时间,可以用一个复杂的hash运算试试。

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