0

我在 Windows 8 开发教程中读到,使用 HTML/JavaScript 编写的 Metro 应用程序在单线程上运行。如果是这样,它如何在 WinRT 中执行异步函数?

4

2 回答 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 回答