所以我正在用Javascript构建一个相当复杂的(从我的角度来看)客户端网络应用程序。
该程序所做的基本上是从用户那里获取一组(相当大的)字符串数据,从用户那里获取关键字列表,执行搜索并返回一个真/假数组。
很明显它是这样工作的:
var userData = ["lorem ipsum", "dolor sit amet", " consectetur adipisicing"];
var userKeywords = ["et","or"];
var isMatch = false;
for (var x in userData){
var y = 0;
while (y<userKeywords.length && !isMatch){
isMatch = (userData[x].match(userKeywords[y]) !== null)? true : false;
y++;
}
}
// That would return [true, true, true]
(那只是为了给你主要的想法)
因为我正在处理相当大量的数据(50K ++)和关键字(~50),所以我的程序可以运行几分钟。虽然我们知道在运行大型程序时不要惊慌和等待,但我的用户不会......
所以我想在程序运行时给他们一些关于程序执行的反馈,就像一个基本的进度条一样,但我找不到如何。
我知道我可以计算我要求我的程序执行的任务的长度,然后增加一个计数器并将结果发布到 DOM 中——但是循环访问 DOM不是问题吗?
var userData = ["lorem ipsum", "dolor sit amet", " consectetur adipisicing"];
var userKeywords = ["et","or"];
var isMatch = false;
var myTask = userData.length * userKeywords.length ;
var myCounter = 0;
for (var x in userData){
var y = 0;
while (y<userKeywords.length && !isMatch){
isMatch = (userData[x].match(userKeywords[y]) !== null)? true : false;
y++;
myCounter++;
console.log("Ran " + myCounter + " calculations out of " + myTask);
}
}
那么,我怎样才能就程序的执行向我的用户提供反馈呢?谢谢!