我打算在本地写一些用于加密javascript文件的代码。对于大文件和大密钥大小,CPU使用率(自然)非常高。在单个脚本设计中,这通常会挂起浏览器,直到任务完成。
为了提高响应速度并允许用户在同一时间做其他事情,我想尝试让脚本对用户的PC更“友好”。加密过程将以二进制字符串形式读取文件,然后以块的形式加密字符串(类似于1KB /块 - 需要测试)。我想尝试并使用基于HTML5的工作人员使整个事情尽可能增量。类似的东西:
这可能有助于多核处理器,让多个工作人员同时活着。
无论如何,是否有人为了降低CPU使用率而故意放慢脚本速度?比如将工作人员的加密任务分成单个操作,并在它们之间引入延迟。
间隔定时器回调每100ms(例如)。
工人忙吗?
是 - 等待另一个间隔
否 - 开始加密下一个字母
建议/想法?
有没有人有使用工人的经验?如果你将主要用户界面与工作人员分开来加强工作,那么响应能力会增加吗?
答案 0 :(得分:2)
这不使用任何HTML5,但这是一个每N毫秒调用一个函数的例子,假设你可以确定一个合适的等待时间。基本上,我试图通过向您展示在执行更多处理之前强制停止一段时间的方法来帮助您。
function doSomething(){
clearTimeout(timeout);
// do your "expensive" processing
// ...
// decide the job is done and return here or else
// call doSomething again in sleepMS milliseconds
timeout = setTimeout(doSomething,sleepMS);
}
var timeout;
var sleepMS = 1000;
doSomething();
修改强>
从
更改了最后一行var timeout = setTimeout(doSomething,1000);
只是这个
doSomething()
编辑2
在setTimeout调用中将1000更改为sleepMS,duh:)