console.log() 异步还是同步?
P粉248602298
P粉248602298 2023-08-27 22:31:53
[JavaScript讨论组]

我目前正在阅读 Trevor Burnham 的《Async Javascript》。到目前为止,这是一本很棒的书。

他谈到此代码片段和 console.log 在 Safari 和 Chrome 控制台中是“异步”的。不幸的是我无法复制这个。这是代码:

var obj = {}; 
console.log(obj); 
obj.foo = 'bar';
// my outcome: Object{}; 'bar';
// The book outcome: {foo:bar};

如果这是异步的,我预计结果就是书中的结果。 console.log() 被放入事件队列中,直到执行完所有代码,然后运行它并具有 bar 属性。

看起来虽然它正在同步运行。

我运行这段代码是错误的吗? console.log 实际上是异步的吗?

P粉248602298
P粉248602298

全部回复(1)
P粉930534280

这并不是问题的真正答案,但对于偶然发现这篇文章的人来说可能会很方便,而且评论太长了:

window.console.logSync = (...args) => {
  try {
    args = args.map((arg) => JSON.parse(JSON.stringify(arg)));
    console.log(...args);
  } catch (error) {
    console.log('Error trying to console.logSync()', ...args);
  }
};

这将创建 console.log 的伪同步版本,但具有与接受的答案中提到的相同的警告。

由于目前看来大多数浏览器的 console.log 都以某种方式异步,因此您可能希望在某些情况下使用这样的函数。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号