我有一个数据密集型的Cappuccino应用程序,运行一个"作业"可能需要长达30秒的时间。例如,可以将多个数组中的值组合起来,生成一个用于TableView的进一步数组。当这需要一秒或2秒以上的时间时,我想包括一个动画进度条,但我似乎阻止了主(主)线程,所以看不到任何活动。即控制台消息和显示更新都等待直到作业完成。是否可以在后台线程上运行这样的作业,以便主应用程序(包括进度条)可以在过程中更新和显示?
Javascript没有线程或共享内存。您可以使用webworker API并行执行代码。web工作者的一般问题是,在工作者中运行的代码必须在一个单独的文件中。
幸运的是,有人已经为它创建了一个很好的包装器,它将从一系列代码中创建一个数据blob,并将其用作工作者的文件。然后,您需要将数据传递给新的工作人员,并让它运行。
您可以偶尔从您的工作人员调用postMessage(),用于更新进度指示器。
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/basic_usage