我有一个数据密集型 Cappuccino 应用程序,运行“作业”最多可能需要 30 秒。一个示例可能是组合来自多个数组的值以生成另一个数组以在 TableView 中使用。我想包括一个动画进度条,这将花费超过一秒或 2 秒,但我似乎阻止了主(主)线程,因此看不到任何活动。即控制台消息和显示更新都等到作业完成。是否可以在后台线程上运行这样的作业,以便主应用程序(包括进度条)可以在此过程中更新和显示?
问问题
75 次
1 回答
3
Javascript 没有线程或共享内存。您可以使用 webworker API 并行执行代码。web worker 的普遍问题是在 worker 中运行的代码必须在一个单独的文件中。
幸运的是,有人已经为它创建了一个很好的包装器,它将从一串代码创建一个数据块并将其用作工作人员的文件。然后,您需要将数据传递给该新工作人员,并让它运行。
您可以偶尔从您的工作人员调用 postMessage() 来更新进度指示器。
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/basic_usage
于 2015-03-22T18:05:03.077 回答