我在 Windows 8 开发教程中读到,使用 HTML/JavaScript 编写的 Metro 应用程序在单线程上运行。如果是这样,它如何在 WinRT 中执行异步函数?
user937999
问问题
414 次
2 回答
2
这是一个多部分的答案。
传统上 - 是的,它是单线程的。异步是在后台使用计时器完成的。但是,随着 Web Worker 的出现,您可以在多个线程上运行后台处理(或使用 Windows 运行时组件执行线程并在此处依赖 .NET 进行线程处理)。
Windows Store HTMl/JS 应用程序支持 Web Worker,所以是的,您可以拥有多个线程。
于 2013-05-18T17:15:59.480 回答
0
是的,JavaScript 引擎确实是单线程的。不过,对 API 的调用都是本机代码,因此可以(而且大多数情况下)可以打开单独的线程。
请参阅此 MSDN 文章,以全面了解底层机制以及如何在代码中处理此问题的一些建议。WinJS Promise 内部还用于setImmediate
允许渲染和消息循环在多个 JavaScript 函数之间接管,并且 - 作为一个重要的副作用 - 缩短了调用堆栈。
于 2013-05-18T17:03:16.320 回答