我使用javascript上传多个文件。
上传文件后,我需要运行多个处理函数。
由于需要处理时间,我需要在前面的UI告诉用户预计整个过程剩余的时间。
基本上我有3个功能:
这就是我期望屏幕基本上看起来的样子。
应显示剩余百分比和剩余时间等信息。
但是,我不确定是否允许服务器提供信息,或者我只使用javascript进行hackish估算。
我还需要更新屏幕,比如告诉用户消息,例如
“目前正在上传”
如果我在功能1。
如果我在功能2处“生成元数据”。
“处理......”如果我在功能3。
功能2仅在成功完成1后发生。
功能3仅在成功完成2后才会出现。
我已经在使用q.js承诺来处理这方面的一些部分,但代码却变得非常混乱。
我最近遇到了Backbone,它允许结构化的方式处理单页应用程序行为,这就是我想要的。
我没有问题,服务器端返回json响应以确定端点是成功还是失败。
我想知道使用Backbone.js
实现此功能的好方法答案 0 :(得分:2)
您可以使用“进度”文件或DB条目来存储后端进程的状态。让后端进程定期更新此文件。例如,将其写入文件:
{"status": "Generating metadata", "time": "3 mins left"}
用户提交文件后,前端开始使用简单的ajax调用和setTimeout ping后端progress
函数。 progress
函数将只打开此文件,获取JSON格式的状态信息,然后更新前端进度条。
您可能希望将ajax调用附加到您的模型上。让您的前端视图监视status
的更改并相应更新(例如进度条)。
答案 1 :(得分:0)
长轮询请求: Polling request for updating Backbone Models/Views
基本上,当您上传文件时,您将为每个给定文件分配“FileModel”。 FileModel将每N秒启动一次长轮询请求,直到状态为“完成”。