【发布时间】:2015-11-04 18:50:11
【问题描述】:
几年前我就知道python和数据库了。
但我想提高我有限的 JavaScript 知识。对于我的玩具项目,我想在 Web 浏览器中使用异步队列并为此使用 AngularJS。
在 python 中有一个很好的类,叫做multiprocessing.Queue,我以前用过。
现在我搜索类似的东西,但在 AngularJS 中
-
第 1 步:队列中拉出工作项(粉红色圆圈)。只是查看json字节。
-
第 2 步:用户处理数据。
-
第 3 步:out-queue 负责将结果发送到服务器。
为什么会有这种“复杂”的设置?因为我希望应用程序尽可能地响应。入队应预加载一些数据,出队应处理响应通信。
另一个好处是,通过这种设置,应用程序可以处理几分钟的服务器或网络中断。
AngularJS 的双向数据绑定会立即更新用户编辑的数据,这并不适合我的问题。或者我错过了什么。我是 AngularJS 的新手。
图中粉红色的圆圈代表 JSON 数据结构。我想通过一个请求将它们中的每一个推送到浏览器。
例子:
用户看到一个问题,然后他需要填写三个字段。例如:
- 答案:输入文字
- like-this-question: integer from 1..5
- 难度:从 1..5 开始的整数
数据应该在按下“提交”后放入队列。他应该马上得到下一个问题。
问题:
AngularJS 是否已有可用的生产者-消费者队列?如果没有,如何实现?
更新
从客户端发送数据可以使用纯 AJAX 实现。预取数据的队列是更复杂的部分。尽管两者都可以使用相同的实现。客户端以超低延迟获取新数据非常重要。 in-queue 每次最多填充 5 个 item 以避免客户端等待数据。
在我的情况下,浏览器是否关闭并且队列中的项目丢失并不重要。填充队列在服务器部分是只读的。
我没有固定在 AngularJS 上。如果有充分的理由,我很乐意更改框架。
可以使用 localStorage (html5) 来保留浏览器重新加载之间的队列
【问题讨论】:
-
您是否需要在 JS 中实现队列,或者这只是您的偏好?为什么不直接使用现有的多种队列之一并通过 REST 与之通信?我的理解是AngularJS应该以这种方式使用。
-
npmjs.com/package/node-taskqueue 如果您有兴趣使用用 JS 编写的任务队列 API。
标签: javascript angularjs producer-consumer