javascript-JS单线程 如何避免阻塞?

问题描述

JS单线程 如何避免阻塞?

笔者初接触js,目前还在啃javascript高级程序设计,啃完ECMAScripts和一部分DOM,有个问题很困惑,求助各位大神
js在浏览器的执行是单线程的,我这样理解应该是没问题的吧?那么问题来了,假设我要实现一个功能,每隔一秒就需要调用一次,怎么样才能保证我的这个进程不会阻塞。比如一个显示时间的模块,每隔一秒就需要调用一次,进行修改,但是现在有一个进程需要从服务器端交互数据,而get的过程大于1000ms,那么怎么样确保,时间显示不会停滞

解决方案

以前的JavaScript是不能多线程执行的,你在运行一段脚本的时候,如果有其它脚本正在请求,那这段脚本就只能等待。不过最新的html5支持Web worker功能,这个相当于让JavaScript可以多线程执行任务。具体使用你可以百度。

解决方案二:

http://www.cnblogs.com/MeteorSeed/articles/2283629.html

解决方案三:

js的时间定时器就是异步触发的,所以你的处理时间超过1s,定时器就不准了。
http://blog.csdn.net/talking12391239/article/details/21168489

时间: 2024-09-24 08:25:39

javascript-JS单线程 如何避免阻塞?的相关文章

请教JS达人:JavaScript的单线程和AJAX的异步操作是神马情况啊?

问题描述 想确认一个问题.javaScript代码是单线程执行的吧?ajax也属于javaScript的范畴吧?那么ajax是不是也是单线程执行的啊?如果ajax也是单线程执行的,那么ajax的异步加载或请求是怎么回事啊请教JS达人.解答一下 解决方案 js 属于单线程ajax的异步加载是这样:它有一个回调方法,发出请求后就把句柄交给浏览器,js继续执行其他的代码,当服务器返回请求后,浏览器"尽快"调用之前的回调方法是"尽快",因为当前可能有其他正在执行中的方法不宜

node.js回调函数之阻塞调用与非阻塞调用_node.js

首先,node.js作为javascript运行平台,它采用了事件驱动和异步编程的方式,通过事件注册和异步函数,开发人员可以提高资源利用率,服务器的性能也能得到改善.其次,对于前端人来说,node.js作为js的运行平台,我们可以通过编写系统级或者服务器端的javascript代码交给node.js来执行,让我们前端人也能作用于后台,相比之下,浏览器端的javascript代码在运行时会受到各种安全性的限制,对客户系统的操作有限,而node.js则是一个全面的后台运行时,为javascript提

js动态获得滚动条宽度 JavaScript,js

javascript|js|动态 我现在有一个层,层中有一个div,当内容比较多的时候就出现滚动条,我现在想,当滚动条出现的时候,div中表格的宽度等于div的宽度减去滚动条的宽度,如何才能去动态获得滚动条的宽度,或者判断滚动条的状态既是否出现.------------------------------------------------------------------------------------ 是不是想这样?<div id="demo" style="

javascript(js)的小数点乘法除法问题详解

 本篇文章主要是对javascript(js)中的小数点乘法除法问题进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 一.用js计算 12.32 * 7  结果是多少?答案:86.24000000000001   为什么会出现这种问题?怎么解决? js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理. 以上的计算可以改为: 12.32 * 100 * 7 /100 得出的结果是:86.24,正确.   另外再计算一下: 8.80 * 100 * 12 /

javascript/JS常用正则表达式

javascript/JS限制用户名只能输入字母和数字下划线 function checkreg(){         var msg = "对不起,输入错误\n";         var regform = document.all.reg;         var username = regform.username;         var password1 = regform.password1;         var password2 = regform.passw

javascript (js)判断手机号码中国移动、中国联通、中国电信

原文:javascript (js)判断手机号码中国移动.中国联通.中国电信 我国使用的手机号码为11位,其中各段有不同的编码方向:前3位---网络识别号:第4-7位---地区编码:第8-11位---用户号码. 中国移动134.135.136.137.138.139.150.151.152.157.158.159.147.182.183.184.187.188.178(4G) 中国联通130.131.132.155.156.185.186.145(属于联通无线上网卡号段).176 (4G) 中国

javascript js 操作数组 增删改查的简单实现_javascript技巧

函数定义 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }

初探JavaScript——JS另类的作用域和声明提前

最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活.往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总 结,对未来的展望.与此同时,也让诸多的老"园"工看完这些小年轻的文章后感触良多,不禁也要写上几笔,所以就出来了很多类似"毕业两年小记"."毕业五 年有感"-- 可能就是某篇博文的一句话,某碗心灵鸡汤就拨动了你心里的那根尘封已久的弦,让你情不自禁的点了个赞,还忍不住的要在下面评论区留下自己此刻心潮澎湃的印记.

javascript(js)的小数点乘法除法问题详解_javascript技巧

一.用js计算12.32 * 7  结果是多少?答案:86.24000000000001 为什么会出现这种问题?怎么解决?js在处理小数的乘除法的时候有一个bug,解决的方法可以是:将小数变为整数来处理.以上的计算可以改为:12.32 * 100 * 7 /100得出的结果是:86.24,正确. 另外再计算一下:8.80 * 100 * 12 / 100结果:105.6000000000000238.80也会出现类似的问题. 精确度增加10倍:8.80 * 1000 * 12 / 1000结果: