从console.log()看浏览器的异步问题
2018-09-11 本文已影响1人
fred_33c7
今天写了一段代码,其实就是3行
let rawData = JSON.parse(response.data)
console.log(rawData)
let data = this.splitData(rawData);
输出的数据是
图1
可是我这里获得的data应该是6个才对啊。
于是我把最后一行注释了。
let rawData = JSON.parse(response.data)
console.log(rawData)
//let data = this.splitData(rawData);
结果变成
这是正确的。
为什么我在
console.log()
后面的代码会影响前面的代码呢?因为这是浏览器的异步特性。
console.log()
并不是javascript真正的一部分,而是由其开发环境(主要是浏览器)决定的。在许多程序(不只是JavaScript)中,I/O 是非常低速的阻塞部分。所以,(从页面/UI 的角度来说)浏览器在后台异步处理控制台I/O 能够提高性能。所以有时候会先执行
console.log()
之后的语句,再来执行console.log()
,必须要小心这个问题,要不然会造成相当大的困扰。