【发布时间】:2017-08-04 01:32:29
【问题描述】:
我一直在使用 TypeScript 和本机 Promises 在 SPA 中使用该功能,我注意到即使我将长时间运行的函数重构为返回 promise 的异步函数,UI 仍然没有响应。
所以我的问题是:
新的 async/await 功能究竟如何帮助避免阻塞浏览器中的 UI?在使用 async/await 来真正获得响应式 UI 时,是否需要采取任何特殊的额外步骤?
谁能创建一个小提琴来演示 async/await 如何帮助使 UI 响应?
async/await 与之前的异步功能(如 setTimeout 和 XmlHttpRequest)有何关系?
【问题讨论】:
-
被阻塞的代码仍然会被阻塞。如果没有,您可能会有数据竞争。异步函数的想法是您可以暂停以等待稍后执行异步代码。因此,您在等待异步完成时暂停,例如
setTimeout、XHR 响应或单击事件:jsfiddle.net/wgqyayhr (演示需要支持的浏览器) -
async/await不是 ES7 (ES2016) 的一部分。它将成为今年发布的 ES2017 的一部分。
标签: javascript user-interface asynchronous async-await ecmascript-2017