我目前正在阅读 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 实际上是异步的吗?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这并不是问题的真正答案,但对于偶然发现这篇文章的人来说可能会很方便,而且评论太长了:
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都以某种方式异步,因此您可能希望在某些情况下使用这样的函数。