javascript异步编程原理

javascript异步编程原理

ID:8969385

大小:156.50 KB

页数:26页

时间:2018-04-13

javascript异步编程原理_第1页
javascript异步编程原理_第2页
javascript异步编程原理_第3页
javascript异步编程原理_第4页
javascript异步编程原理_第5页
资源描述:

《javascript异步编程原理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、众所周知,JavaScript的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着。在事件队列中加一个延时,这样的问题便可以得到缓解。A:嘿,哥们儿,快点!B:我要三分钟,你先等着,完了叫你~A:好的,记得叫我啊~你(C)也等着吧,完了叫你~C:嗯!...告诉后面排队的人一个准确的时间,这样后面的人就可以利用这段时间去干点别的事情,而不是所有的人都排在队列后抱怨。我写了一段程序来解决这个问题:/***@author

2、BarretLee*@emailbarret.china@gmail.com*@description事件队列管理,含延时*/varQ={//保存队列信息a:[],//添加到队列queueq:function(d){//添加到队列如果不是函数或者数字则不处理if(!/function

3、number/.test(typeofd))return;Q.a.push(d);//返回对自身的引用returnQ;},//执行队列dequeued:function(){vars=Q.a.shift();//如果已经到了队列尽头则返回if(!

4、s)return;//如果是函数,直接执行,然后继续dequeueif(typeofs==="function"){s(),Q.d();return;}//如果是数字,该数字作为延迟时间,延迟dequeuesetTimeout(function(){Q.d();},s);}};这段程序加了很多注释,相信有JS基础的童鞋都能够看懂,利用上面这段代码测试下://进程记录函数functionrecord(s){vardiv=document.createElement("div");div.innerHTML=s;console.l

5、og(s);document.body.appendChild(div);}Q.q(function(){record("03s之后搞定,0把1叫进来");}).q(3000)//延时3s.q(function(){record("12s之后搞定,1把2叫进来");}).q(2000)//延时2s.q(function(){record("2后面没人了,OK,厕所关门~

6、");}).d();//执行队列可以戳戳这个DEMO。也可以直接运行这段程序:/***@authorBarretLee*@emailbarret.china@gmail.com*@description事件队列管理,含延时*/varQ={//保存队列信息a:[],//添加到队列queueq:function(d){//添加到队列如果不是函数或者数字则不处理if(!/function

7、number/.test(typeofd))return;www.78name.comQ.a.push(d);//返回对自身的引用returnQ;

8、},//执行队列dequeued:function(){vars=Q.a.shift();//如果已经到了队列尽头则返回if(!s)return;//如果是函数,直接执行,然后继续dequeueif(typeofs==="function"){s(),Q.d();return;}//如果是数字,该数字作为延迟时间,延迟dequeuesetTimeout(function(){Q.d();},s);}};functionrecord(s){vardiv=document.createElement("div");div.inne

9、rHTML=s;console.log(s);document.body.appendChild(div);}Q.q(function(){record("03s之后搞定,0把1叫进来");}).q(3000).q(function(){record("12s之后搞定,1把2叫进来");}).q(2000).q(function(){record("2后面没人了,OK,厕所关门~

10、span>");}).d();//事件队列管理,含延时运行代码 一、Javascript异步编程原理显然,上面这种方式和银行取号等待有些类似,只不过银行取号我们并不知道上一个人需要多久才会完成。这是一种非阻塞的方式处理问题。下面来探讨下JavaScript中的异步编程原理。1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。