从console.log()看浏览器的异步问题

今天写了一段代码,其实就是3行

let rawData = JSON.parse(response.data)
console.log(rawData)
let data = this.splitData(rawData);

输出的数据是


从console.log()看浏览器的异步问题_第1张图片
图1

可是我这里获得的data应该是6个才对啊。
于是我把最后一行注释了。

let rawData = JSON.parse(response.data)
console.log(rawData)
//let data = this.splitData(rawData);

结果变成

从console.log()看浏览器的异步问题_第2张图片
图2

这是正确的。
为什么我在 console.log()后面的代码会影响前面的代码呢?
因为这是浏览器的异步特性。
console.log()并不是javascript真正的一部分,而是由其开发环境(主要是浏览器)决定的。在许多程序(不只是JavaScript)中,I/O 是非常低速的阻塞部分。所以,(从页面/UI 的角度来说)浏览器在后台异步处理控制台I/O 能够提高性能。
所以有时候会先执行 console.log()之后的语句,再来执行 console.log() ,必须要小心这个问题,要不然会造成相当大的困扰。

你可能感兴趣的:(从console.log()看浏览器的异步问题)