为了使web应用程序响应,您使用异步非阻塞请求。我可以设想两种方法来实现这一点。一种是使用延期/承诺。另一种是Web Workers。对于Web Workers,我们最终引入了另一个流程,并且产生了必须来回编组数据的开销。我一直在寻找某种性能指标,以帮助理解何时选择简单的非阻塞回调而不是Web Workers。
有没有某种方法可以在不对两种方法都进行原型的情况下制定使用哪种方法?我在网上看到了很多关于Web Worker的教程,但我没有看到多少成功/失败的故事。我只知道我想要一个响应式的应用。我正在考虑使用Web Worker作为内存中数据结构的接口,该内存数据结构的大小可能在0.5-15MB之间(本质上是一个DB),用户可以查询和更新。
根据我对javascript处理的理解,有可能将一个长时间运行的任务分成片,这样它就会周期性地产生控制,从而允许其他任务占用一部分处理时间。这会是使用Web Workers的标志吗?
发布于 2014-01-05 12:50:47
`延迟/承诺和Web Worker解决不同的需求:
换句话说,JavaScript是单线程的,你不能使用延迟/承诺来异步运行代码--一旦代码运行完成了承诺,其他代码就不会运行了(你可以改变执行顺序,例如使用setTimeout(),但这并不会让你的web应用程序本身更具响应性)。尽管如此,您仍然可以通过某种方式创建异步查询的假象,例如,通过每隔几毫秒递增索引(例如,使用setInterval)来迭代值数组,但这几乎不实用。
为了异步执行诸如查询之类的工作,从而从应用程序的UI中卸载这项工作,您需要一些实际异步工作的东西。我看到了几个选项:
< code >H116使用可通过HTTP访问的数据库(例如Redis,CouchDB),从客户端发出异步GET (即ajax)来查询数据库(外加处理结果的承诺),
开发混合web应用程序
在您的情况下,哪种方法最好?如果没有确切的要求,很难判断,但以下是我将考虑的维度:
我发现this book是一个有用的读物。
https://stackoverflow.com/questions/20929508
复制相似问题