![]() |
1
9
使用 web Workers |
![]() |
2
6
你可以用
我不确定它的并发性如何,但它是一个异步编程模型。 |
![]() |
3
4
正如Grumdrig所说,您可以编写如下代码:
显然,这样运行代码没有性能优势。在任何情况下,这都会使事情需要更长的时间才能完成。但是,如果单个任务占用的时间太长而导致浏览器冻结(并且可能会触发“脚本占用的时间太长”浏览器警告),则将其分解为更小、执行速度更快的部分会很有帮助,这些部分会在一段延迟时间后依次运行,从而给浏览器一些喘息的时间。 已经提到了webworkers,如果您不关心IE兼容性,那么您可以使用它们来实现真正的并发性。但是,出于安全原因,对其使用有一些严格的限制。例如,它们不能以任何方式与DOM交互,这意味着对页面的任何更改仍然必须同步进行。此外,传入和传出worker的所有数据都在传输过程中序列化,这意味着不能使用真正的Javascript对象。也就是说,对于密集的数据处理,Web工作者可能是比将一个函数分解为多个计时器延迟的任务更好的解决方案。 |
![]() |
4
2
这一领域的一个新发展是 HTML5 Web Workers. |
![]() |
5
1
web workers 正如其他人所指出的那样。旧的方法通常是使用AJAX并在服务器上完成工作(无论是使用webworkers还是AJAX,都必须序列化数组并反序列化结果) |
![]() |
6
1
我不得不同意穆古的观点,我也想知道你为什么要一次穿过这么大的阵列。 StratifiedJS ,它允许您同时执行多个任务,只要它们是异步的。而且,webworkers是一个笨拙的“解决方案”,只会使事情变得更复杂,而且,它们在IE中不起作用。 在分层DJ中,你可以直接写。
|
![]() |
Jess The Witch · GCP云功能中处理延迟任务的模式 6 月前 |
![]() |
Plup · 连接失败时,PyMongo异步客户端未引发异常 7 月前 |
![]() |
user1233894 · 尝试从全局函数传递值 7 月前 |
![]() |
Fabiano Taioli · 管理单线程Rust中的阻塞函数 11 月前 |
![]() |
river7816 · 为什么spdlog不在async函数中打印 1 年前 |