我在获取进度条以从Json结果中检索其进度并根据每10秒的计时器检查更新进度条时遇到一些困难。
我可以像这样创建一个json结果:
{"success":true, "progress":0.2}
我想一般的想法是,我需要一个间隔设置为10秒的任务,并让跑步者运行任务,当进度条开始工作时,跑步者将检查Json的结果,并且根据需要更新进度条。
到目前为止代码:
var task = {
run: function(){
// what to add here?
},
interval: 10000
}
}
话虽如此,我遇到了困难:
非常感谢。
答案 0 :(得分:5)
我已经设法让它运行起来,显然这是我的问题中缺少的拼图。对于像我这样坚持这个的人。
基本上只需添加此部分即可从您指定的网址中检索json结果,并在成功时更新您的进度条。
最简单的代码嵌入你的任务中,如下所示:
Ext.Ajax.request({
url: 'getStatus',
success: function(r) {
var i = Ext.decode(r.responseText).progress;
progressbar.updateProgress(count +' completed');
}
});
答案 1 :(得分:0)
我不知道你在运行什么堆栈但是你可以用一般方法做什么。
如何在任务中添加Json部分?
如果您可以访问memcached或类似内容,则可以使用它来存储任务的进度。以同样的方式,您可以使用数据库甚至文件,因为您要存储的只是一个数字。
如何给出各种任务的进度数,你不知道需要花多少时间。我会说如果您的处理是基于循环的,就像您更新n行,您可以将其用作仪表。
我认为您不必担心进度表准确无误只是它应该大致了解处理的位置。
如何使用给定的Json结果更新进度条?
ExtJS有一个TaskManager,它允许你每隔n秒进行一次ajax查询并取出进度并更新附加的进度条。
// Start a simple clock task that updates a div once per second
var task = {
run: function(){
Ext.fly('clock').update(new Date().format('g:i:s A'));
},
interval: 1000 //1 second
}
Ext.TaskMgr.start(task);