没有web工作程序的Javascript后台处理
Javascript background processing without web worker?
我很确定,但只是想听听你的意见:
如果web工作人员不可用,是否可以在后台使用Javascript执行操作?是否存在"滥用"异步setTimeout()
函数或其他机制的方法?我的目标是从localStorage
中读取内容,进行一些转换并通过Ajax发送。
谢谢。
您不能在后台运行操作,但可以将其拆分为小块,并使用setTimeout运行下一部分。因此,浏览器将有时间呈现更改,并对正常操作做出响应,而您的长过程也将执行
function iteration(){
do_some_small_amount_of_work();
if (!not_finished)
scheduler.setTimeout(iteration, 1);
}
Javascript中并没有真正的多线程,但您可以使用setTimeout(code, 0)
异步运行代码。这会将函数排队以供执行。
在不使用web工作者的情况下,您所建议的(使用setTimeout
)是唯一的方法,当然,在这一点上它根本不是真正的"背景"。请注意,每次启动"后台"代码时,都需要保持处理时间很短,因为它根本不是真正的后台代码;当您的代码运行时,页面将相当无响应(无响应的程度因浏览器而异,但页面上的任何JavaScript代码都必须等待函数调用完成)。
不,在Javascript中没有办法在后台做任何事情。它是严格的单线程。
您可以使用setTimeout
或setInterval
在前台完成工作,但每次都只是其中的一小部分。这样,界面在处理突发工作之间的事件时仍然具有合理的响应性。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 当从代码后台输出Javascript时,如何处理换行符
- 绕过 javascript 的 chrome 和 FF 后台选项卡处理错误
- 如何在后台运行巨大的处理
- $http请求的后台处理通知
- 没有web工作程序的Javascript后台处理
- 如何在jsp中使用ajax或jquery进行后台处理
- 为什么扩展's弹出被阻止时,后台js正在处理
- Chromium Embedded Framework中本机函数的后台处理