12.关于console.log打印数据,数据请求前后打印结果一样的问题

这个问题是,昨天检查数据有没有获取到时候遇到的

之前都是用console.log()去打印数据来检查有没有问题,这次也一样

// 之前是这样的
mounted: function () {
  this.getdata();
  console.log(this.res[0]);
  this.$forceUpdate();     //强制刷新视图
}

这里通过console.log()打印数据展开后是有数据的,当时就以为数据已经获取到了,后来感觉不太对,就在获取数据之前也加了打印,展开后发现竟然也是有数据的,类似于下面这样

然后改成了alert试了,用JSON.stringify格式化为字符串后用alert输出,效果如下,是没有问题的

所以后来改成了用alert显示判断数据是不是空的,因为alert显示时后面的代码是不会执行的,点击确定以后才会执行

弄好以后去网上查了一下关于console.log打印的问题,在知乎上发现了一个不错的回答,好像是谷歌浏览器console.log()的问题,原文链接:alert 和 console.log 的结果不同?

下面是原文的代码

// 实验 1
var a = { a: { a: '要够深才能制造这个幻觉' } }  // ← 记住我的模样
console.group('实验1')
console.log('这个a应该是这样:%s', JSON.stringify(a))
console.log('“实际”上是这样%o', a)
console.log('然后他们惊呼“console.log是异步的”,原因实际上在Object右边的"i"图标里写着')
a.a.a = '我变了'
console.groupEnd('实验1')

// 实验 2
var b = { x:'你好,我是快照', y: { z: '要够深才能制造这个幻觉' } }  // ← 记住我的模样
console.group('实验2')
console.log(b)
b.x = '你展开后会看到是我'
console.log('↑展开试试,展开后再看看Object左边这个“i”上写着啥')
console.groupEnd('实验2')

/*
Object value at left was snapshotted when logged, value below was evaluated just now.
这句话是说:
这左边的值是log的时候的快照,下面的值是展开的时候计算出来的。
*/

运行以后是下面这样的:

蓝色框框里面的内容,是console.log打印时的内容,

红色框框里面的内容,是点击展开时重新请求的,这个时候是最新的数据,而不是当时的数据

然后我改了一下,新加了一个转换为字符串以后,再输出的console.log

这样console.log打印的数据就是当时的数据了。

posted @ 2019-12-26 14:48  夜听雪  阅读(453)  评论(0编辑  收藏  举报