一个 console. log 的问题

2020-06-22 21:19:58 +08:00
 gramyang
刚开始学 js,遇到一个问题:在 vue 中使用 axios 做请求,请求返回的数据用 alert 弹窗显示一下,结果数据报空且报 provisional request headers 。
其中存在跨域的问题,但是后端进行了处理。
折腾了半天都找不到原因,后来把 alert 改成 console. log,问题解决了。。。
这是什么原理?
3538 次点击
所在节点    JavaScript
15 条回复
oukichi
2020-06-22 21:25:14 +08:00
代码也不贴,HTTP 请求也不贴,你让别人怎么帮你啊兄弟。
我只能说这个和 alert 以及 console.log 半毛钱关系也么有
gramyang
2020-06-22 21:32:29 +08:00
@oukichi 就是一个最简单的例子,前端 axios,后端 gin 跨域,同样的代码用 alert 就报错,用 console. log 就可以。
zarte
2020-06-22 21:38:58 +08:00
我猜你打印的时候变量确实是空的,console.log 比较特别在你点开查看的时候获取的是当前值。
gramyang
2020-06-22 21:45:40 +08:00
@zarte 对,说 console. log 有延迟性
1iuh
2020-06-22 21:50:07 +08:00
不是有延迟, 你输出的如果是一个对象, 你看到的值是当前的值,而不是你输出的时候的值。
crystom
2020-06-22 22:46:57 +08:00
是的,打印之前 json 一下才能确定值的
shintendo
2020-06-22 22:47:35 +08:00
点进来前就知道是打印对象的问题,console.log 也就这点问题了
xingyue
2020-06-23 01:24:28 +08:00
调试建议:
1. debugger;
2. console.log(JSON.stringify(response));

但是你的问题我尝试复现但是无法复现,按理说 alert(response)至少也显示个[object Object],因为请求是已经拿到数据并通过了 axios 的解析了的;
贴一个 demo 地址: https://codesandbox.io/s/elegant-field-e0r0v?file=/src/App.vue
zhw2590582
2020-06-23 08:35:13 +08:00
alert 打印是五年多以前才用的 debug 方法
VDimos
2020-06-23 09:29:24 +08:00
console.log 打印的是内存地址,点击展开它从内存中读的
zhuweiyou
2020-06-23 10:44:59 +08:00
log 和 alert 之前,先 JSON.stringify 。

不过 provisional request headers 肯定跟你这个没关系。
wxsm
2020-06-23 12:19:24 +08:00
对于 obj 来说,console 打印的是引用,并不是快照。alert 是快照,就这点区别。
Chenamy2017
2020-06-23 12:45:34 +08:00
#5 说的对
jmyz0455
2020-06-23 17:03:10 +08:00
先了解一下引用对象
shpasspass
2020-06-23 21:03:08 +08:00
如果是在微信里打开的网页,一开始 alert 的话,会有很大概率不弹 alert 出来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX