HTML5宁波网站建设中搜索闰年

发布时间:2015-2-12 10:25:57

HTML5宁波网站建设中搜索闰年

  搜索闰年
  WebWorker已经能够完美的计算素数或Fibonacci(菲波那契)数列(可通过Google找到相关案例)。现在我们要讨论另一个有趣的任务——我们将査找自0年1月1日以来的所有闰年。鉴于现有硬件只需要几分之一秒便可完成此任务,单纯计算闰年无法体现出WebWorker的优越性,因此在这里我们将程序弄得更为复杂。此程序将检査非常小的时间单位(秒或分钟)是否为2月29日,若为是,则判定此年为闰年。鉴于此程序在不同硬件下的执行速度不同,因此我们添加了一个设置基础时间单位(step)的选项。图KM展示了它在一个性能较差的CPU上经历了数秒后的运箅结果。
  单击开始按钮将执行startCalc()函数。此函数读取step值,并通过脚本date_worker.js将WebWorker初始化。
  varopts=document.formsstepForm.step.options;startCalc=function(){varstep=opts[opts.selectedlndexl.value;varw=newWorker('date_worker.js1);w.postMessage(step);_主调函数将Step值被传递给postMessage(),并与脚本date_worker.js中message事件监听器通信,然后线程开始工作:
  addEventlistener('message',千unction(evt){vartoday=newDate;varoldMonth=-1;for(vari=0;i〈today;i+=Number(evt.data)*i000){vard=newDate(i);if(d.getDate()==29&&d.getMonth()==1&&d.getHours()==12&&d.getMinutes()==0){postMessage(d.toLocaleString());if(d.getMonth()!=oldMonth){postMessage("+d.getFullYear()+"-M+(d.getMontn()+l);;oldMonth=d.getMonth();},)false);线程中的一个for循环从Os开始运行至当前日期(今天),间隔设为postMessageO传递的值通过函数NumberO转化为数字再乘以,必须乘以是因为变量today包含的当前值单位为毫秒而非秒。通过data属性访问postMessage()的数据的方法在此前关于WebSockets的章节中已经介绍过了。若循环中的一个日期被判断为2月29日,线程会将此日期以字符串形式给主调脚本。
  为了显示当前的计算进度,程序在循环进入新月份同时发送另一条信息。此信息以字符“y”作为开始,包含年份及月份。以下代码展示了主调脚本如何将此信息与闰年通知区分开:
  宁波网站建设认为w.onmessage=function(evt){
  if(evt.data.substr(0,2)==ny"){
  $(My").innerHTML=evt.data.substr(2);
  }else{
  ^$("cnt").innerHTML+="Leapyear:,,+evt.data+"\nM;函数substrO从变量evtdata中截取头两个字符,并将它们与值“y”作出比较。若结果匹配,显示当前所运算日期的区域将被更新;否则,该日期将作为新行被添加到为cut的区域中。像此前许多案例中所做的一样,我们使用函数$〇作为函数document.getElementById()的缩写。
  若线程运行时间过长(臂如说你的计算机运行速度不够快),可以通过单击Stop按钮来中止进程。这种中止是通过函数terminateO来实现的。其后,运箅过程中被禁用的Start按钮将重新激活:
  stopCalc=function(){w.terminate();
  $(Hstart").removeAttribute("disabled");
  本文由乐华网络编辑,转载请注明出处
  宁波网站建设www.leseo.net
上一篇:
在网络上数据与日倶增的情况下,各种需要现已无法以单一遍及性搜索引擎来满意,因而对专门范畴搜索、笔直搜
下一篇:
决议搜索引擎访问频率的要素有两个:网站的重要性与网站的更新率。假如你的网站重要性髙,可是不常更新,搜
关于乐华
乐华介绍
乐华思维
人才招聘
使用条款
隐私保护
RSS订阅
网站地图
新闻动态
乐华观点
行业动态
频道介绍
服务介绍
案例展示
品牌研究
品牌理论
品牌体系
联系我们
400-680-2900
社会媒体
微信公众平台
微信公众平台