亚洲一区二区三区成人A片在线_色老久久精品偷偷鲁_做爰高潮A片免费视频一_99pao在线视频国产

咨詢電話:023-88959644    24小時(shí)服務(wù)熱線:400-023-8809
NEWS CENTER ·
新聞動態(tài)
關(guān)注中技互聯(lián) 關(guān)注前沿

setTimeout 的黑魔法

發(fā)表日期:2016-05-03    文章編輯:重慶網(wǎng)站建設(shè)小編    瀏覽次數(shù):22    標(biāo)簽:

  setTimeout,前端工程師必定會打交道的一個(gè)函數(shù).它看上去非常的簡單,樸實(shí).有著一個(gè)很不平凡的名字--定時(shí)器.讓年少的我天真的以為自己可以操縱未來.卻不知樸實(shí)之中隱含著驚天大密.我還記得我第一次用這個(gè)函數(shù)的時(shí)候,我天真的以為它就是js實(shí)現(xiàn)多線程的工具.當(dāng)時(shí)用它實(shí)現(xiàn)了一個(gè)坦克大戰(zhàn)的小游戲,玩兒不亦樂乎.可是隨著在前端這條路上越走越遠(yuǎn),對它理解開始產(chǎn)生了變化.它似乎開始蒙上了面紗,時(shí)常有一些奇怪的表現(xiàn)讓我捉摸不透.終于,我的耐心耗盡,下定決心,要撕開它的面具,一探究竟.
  setTimeout() 方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。
  js是沒有多線程的.js引擎的執(zhí)行是單線程執(zhí)行.這個(gè)特性曾經(jīng)困擾我很久,我想不明白既然js是單線程的,那么是誰來為定時(shí)器計(jì)時(shí)的?是誰來發(fā)送ajax請求的?我陷入了一個(gè)盲區(qū).即將js等同于瀏覽器.我們習(xí)慣了在瀏覽器里面執(zhí)行代碼,卻忽略了瀏覽器本身.js引擎是單線程的,可是瀏覽器卻可以是多線程的,js引擎只是瀏覽器的一個(gè)線程而已.定時(shí)器計(jì)時(shí),網(wǎng)絡(luò)請求,瀏覽器渲染等等.都是由不同的線程去完成的。
  js引擎單線程執(zhí)行的,它是基于事件驅(qū)動的語言.它的執(zhí)行順序是遵循一個(gè)叫做事件隊(duì)列的機(jī)制.從圖中我們可以看出,瀏覽器有各種各樣的線程,比如事件觸發(fā)器,網(wǎng)絡(luò)請求,定時(shí)器等等.線程的聯(lián)系都是基于事件的.js引擎處理到與其他線程相關(guān)的代碼,就會分發(fā)給其他線程,他們處理完之后,需要js引擎計(jì)算時(shí)就是在事件隊(duì)列里面添加一個(gè)任務(wù). 這個(gè)過程中,js并不會阻塞代碼等待其他線程執(zhí)行完畢,而且其他線程執(zhí)行完畢后添加事件任務(wù)告訴js引擎執(zhí)行相關(guān)操作.這就是js的異步編程模型.
  本文由重慶網(wǎng)站建設(shè)-中技互聯(lián):m.aorustv.com
如沒特殊注明,文章均為中技互聯(lián)原創(chuàng),轉(zhuǎn)載請注明來自m.aorustv.com
相關(guān)新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429號

  • qq客服
  • 公眾號
  • 手機(jī)版
  • 新浪微博