【发布时间】:2021-02-06 06:47:28
【问题描述】:
简介
我和我的一位同事一直在讨论浏览器中 JavaScript 的异步特性,并想知道有哪些技术优势。我们知道 async/await 是 Promises 的语法糖,但很想知道使用其中一个是否有任何其他性能优势。例如:
- 事件循环对 async/await 和 Promises 的处理是否相同?
- 它们都被视为微任务吗?
- 使用一个比另一个有任何延迟执行的好处(例如,同步调用 Promise 执行器中的代码,但在异步函数中呢)?
- 根据 MDN,async 函数返回一个
AsyncFunction对象,但在 Promise 文档中没有讨论 -AsyncFunction有什么好处? - 性能优势是否相同(如果有)?
示例场景
是
await JSON.parse('json string');
和
new Promise((resolve, reject) => resolve(JSON.parse('json string')));
被事件循环以同样的方式对待(我的语法可能略有偏差)?
参考文献
【问题讨论】:
-
await不等同于new Promise,它更类似于promise.then.. 就它们在事件循环中的功能而言,它们应该是相同的,在性能方面它们应该是和边缘的使用async / await应该能够更好地优化。最后,在这两种情况下JSON.parse都没有为您带来任何好处,因为它不是异步的,实际上会减慢速度。 -
鉴于
JSON.parse不是异步的并且不返回承诺,您的两个示例同样毫无意义。
标签: javascript performance asynchronous promise async-await