我对此相当肯定,但只是有您的意见:没有web worker的Javascript后台处理?
如果Web工作人员不可用,是否可以用Javascript在后台执行操作? 是否有可能“滥用”异步功能或其他一些机制? 我的目标是从localStorage
中读取内容,做一些转换并通过Ajax发送。
谢谢。
我对此相当肯定,但只是有您的意见:没有web worker的Javascript后台处理?
如果Web工作人员不可用,是否可以用Javascript在后台执行操作? 是否有可能“滥用”异步功能或其他一些机制? 我的目标是从localStorage
中读取内容,做一些转换并通过Ajax发送。
谢谢。
不使用网络工作者,你认为(使用setTimeout
)什么是做到这一点的唯一方法,当然它不是真正的“背景”在所有的在这一点上。请注意,每次启动“后台”代码时,您都需要保持处理的时间很短,因为它根本不是真正的后台代码;当你的代码正在运行时,页面将会非常没有响应(它的无响应程度会因浏览器而异,但页面上的任何JavaScript代码肯定会等待你的函数调用完成)。
是不是真的多线程在Javascript,但你可以使用异步运行setTimeout(code, 0)
代码。这将队列执行的功能。
没有,有没有办法做到在JavaScript中的背景什么。它严格地是单线程的。
您可以使用setTimeout
或setInterval
来完成前台的工作,但每次只做一小部分工作。这种方式界面仍然是相当敏感的,因为它处理你的工作爆发之间的事件。
你不能在后台运行操作,但你可以在一小块一小块把它分割,并运行的setTimeout每一个部分。作为结果,浏览器将有时间来呈现的变化,将响应正常的行为,而你的长期过程,以及
function iteration(){
do_some_small_amount_of_work();
if (!not_finished)
scheduler.setTimeout(iteration, 1);
}
还要感谢你3个人。 – ceran
好的执行,但是这意味着如果代码是在未来jQuery的一个点上运行基于UI的用户界面将在那时被阻止,对吧? – ceran