是否向用户提供有关Javascript函数执行的反馈?
因此,我正在用Javascript构建一个相当复杂(从我的角度来看)的客户端web应用程序 程序基本上是从用户那里获取一组(相当大的)字符串数据,从用户那里获取一组关键字,执行搜索并返回一个真/假数组 很明显,它是这样工作的:是否向用户提供有关Javascript函数执行的反馈?,javascript,user-feedback,Javascript,User Feedback,因此,我正在用Javascript构建一个相当复杂(从我的角度来看)的客户端web应用程序 程序基本上是从用户那里获取一组(相当大的)字符串数据,从用户那里获取一组关键字,执行搜索并返回一个真/假数组 很明显,它是这样工作的: var userData = ["lorem ipsum", "dolor sit amet", " consectetur adipisicing"]; var userKeywords = ["et","or"]; var isMatch = false; for
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]
var userData=[“lorem ipsum”、“door sit amet”、“concetetur adipising”];
var userKeywords=[“et”,“or”];
var isMatch=错误;
for(userData中的变量x){
var y=0;
而
我知道我可以计算出我向我的程序询问的任务的长度
为此,请增加一个计数器并将结果发布到DOM中
我会同意的
document.getElementById('output_progress').innerHTML = y + "/" + userData.length;
如果你不想输出任何内容,那么告诉人们该程序仍在运行的最好方法就是使用gif加载程序图像。这是我通常在应用程序中添加的内容。根据你支持的浏览器,你可以使用web workers(每IE10是你的最低阈值),或“分块”处理程序。使用回调或承诺,您可以非常轻松地创建一个标准api,该api将支持其中任何一种—尽管webworkers将更快,UI响应将更平滑
这里有一个非常粗略的例子:(注意,在script.js的第5行,我已经禁用了web workers,因为我们的大多数浏览器无论如何都会使用它,我希望显示它在没有它们的情况下可以工作-只需删除&&false
即可重新启用)
不幸的是,我一直很懒,只是复制并粘贴了你的代码两次。使用XHR,你可以将你的代码保存在一个位置,然后使用web worker或run函数将其拉入。runner是我过去做过的一件非常常见的事情,用于提供某种UI反馈。它需要“块”然后停止并等待一秒钟,然后转到下一个块。通常这足以让屏幕更新。使用setInterval
在每次调用之间稍微延迟一点运行函数,让函数执行下一步并更新进度条。嘿,我已经运行了一些测试but无法获得任何令人满意的结果..JQuery(或本机JS getElementById)在函数运行之前不更新DOM。当处理完所有数据后,DOM最终更新为最高值…即使我使用回调函数,或者如果我设置了间隔/超时,也会发生这种情况-这很奇怪。我不知道web workers,我必须先了解更多关于他们的信息-我认为is确实是解决方案。目前我的项目必须在本地运行(在进一步验证之前),这不允许我使用web workers(webkit本地不支持).无论如何,谢谢你,非常有用!如果你是在本地构建,我真的建议你使用这样的东西-安装起来不像Apache那么麻烦,让你真正刺激一个工作环境。
document.getElementById('output_progress').innerHTML = y + "/" + userData.length;