Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美日韩中文,91原创在线,黄色三级网络

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript事件循環(huán):同步任務(wù)和異步任務(wù)

          avaScript 是一門單線程執(zhí)行的編程語言。也就是說,同一時(shí)間只能做一件事情。如果前一個(gè)任務(wù)非常耗時(shí),則后續(xù)的任務(wù)就不得不一直等待,從而導(dǎo)致程序假死的問題。

          所以為了防止某個(gè)耗時(shí)任務(wù)導(dǎo)致程序假死的問題,JavaScript 把待執(zhí)行的任務(wù)分為了兩類:

          1. 同步任務(wù)(synchronous)

          又叫做非耗時(shí)任務(wù),指的是在主線程上排隊(duì)執(zhí)行的那些任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù)。

          2. 異步任務(wù)(asynchronous)

          又叫做耗時(shí)任務(wù),異步任務(wù)由JavaScript 委托給宿主環(huán)境進(jìn)行執(zhí)行,當(dāng)異步任務(wù)執(zhí)行完成后,會(huì)通知JavaScript 主線程執(zhí)行異步任務(wù)的回調(diào)函數(shù)。

          同步任務(wù)和異步任務(wù)的執(zhí)行過程:

          ①同步任務(wù)由JavaScript 主線程次序執(zhí)行。

          ②異步任務(wù)委托給宿主環(huán)境執(zhí)行。

          ③已完成的異步任務(wù)對(duì)應(yīng)的回調(diào)函數(shù),會(huì)被加入到任務(wù)隊(duì)列中等待執(zhí)行。

          ④JavaScript 主線程的執(zhí)行棧被清空后,會(huì)讀取任務(wù)隊(duì)列中的回調(diào)函數(shù),次序執(zhí)行。

          ⑤JavaScript 主線程不斷重復(fù)上面的第4 步。

          JavaScript 主線程從“任務(wù)隊(duì)列”中讀取異步任務(wù)的回調(diào)函數(shù),放到執(zhí)行棧中依次執(zhí)行。這個(gè)過程是循環(huán)不斷的,所以整個(gè)的這種運(yùn)行機(jī)制又稱為EventLoop(事件循環(huán))

          import thenFs from ' then-fs '
          
          
          console 
          log('A')
          thenFs. readFile(' ./files/1.txt', 'utf8' ). then(dataStr => {
          
          
          console.log('B')
           })
          setTimeout(( ) => {
          console. log('C' )
          },0)
          console.log( 'D')

          正確的輸出結(jié)果:ADCB。

          其中:

          A 和D 屬于同步任務(wù)。會(huì)根據(jù)代碼的先后順序依次被執(zhí)行。

          C 和B 屬于異步任務(wù)。它們的回調(diào)函數(shù)會(huì)被加入到任務(wù)隊(duì)列中,等待主線程空閑時(shí)再執(zhí)行。

          循環(huán)可以將代碼塊執(zhí)行指定的次數(shù)。

          JavaScript 循環(huán)

          如果您希望一遍又一遍地運(yùn)行相同的代碼,并且每次的值都不同,那么使用循環(huán)是很方便的。

          我們可以這樣輸出數(shù)組的值:

          一般寫法:

          document.write(cars[0] + "<br>");

          document.write(cars[1] + "<br>");

          document.write(cars[2] + "<br>");

          document.write(cars[3] + "<br>");

          document.write(cars[4] + "<br>");

          document.write(cars[5] + "<br>");

          使用for循環(huán)

          for (var i=0;i<cars.length;i++)

          {

          document.write(cars[i] + "<br>");

          }

          不同類型的循環(huán)

          JavaScript 支持不同類型的循環(huán):

          • for - 循環(huán)代碼塊一定的次數(shù)

          • for/in - 循環(huán)遍歷對(duì)象的屬性

          • while - 當(dāng)指定的條件為 true 時(shí)循環(huán)指定的代碼塊

          • do/while - 同樣當(dāng)指定的條件為 true 時(shí)循環(huán)指定的代碼塊

          For 循環(huán)

          for 循環(huán)是您在希望創(chuàng)建循環(huán)時(shí)常會(huì)用到的工具。

          下面是 for 循環(huán)的語法:

          for (語句 1; 語句 2; 語句 3)

          {

          被執(zhí)行的代碼塊

          }

          語句 1 (代碼塊)開始前執(zhí)行 starts.

          語句 2 定義運(yùn)行循環(huán)(代碼塊)的條件

          語句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行

          實(shí)例

          for (var i=0; i<5; i++)

          {

          x=x + "該數(shù)字為 " + i + "<br>";

          }

          從上面的例子中,您可以看到:

          Statement 1 在循環(huán)開始之前設(shè)置變量 (var i=0)。

          Statement 2 定義循環(huán)運(yùn)行的條件(i 必須小于 5)。

          Statement 3 在每次代碼塊已被執(zhí)行后增加一個(gè)值 (i++)。

          語句 1

          通常我們會(huì)使用語句 1 初始化循環(huán)中所用的變量 (var i=0)。

          語句 1 是可選的,也就是說不使用語句 1 也可以。

          您可以在語句 1 中初始化任意(或者多個(gè))值:

          實(shí)例:

          for (var i=0,len=cars.length; i<len; i++)

          {

          document.write(cars[i] + "<br>");

          }

          同時(shí)您還可以省略語句 1(比如在循環(huán)開始前已經(jīng)設(shè)置了值時(shí)):

          實(shí)例:

          var i=2,len=cars.length;

          for (; i<len; i++)

          {

          document.write(cars[i] + "<br>");

          }

          語句 2

          通常語句 2 用于評(píng)估初始變量的條件。

          語句 2 同樣是可選的。

          如果語句 2 返回 true,則循環(huán)再次開始,如果返回 false,則循環(huán)將結(jié)束。

          如果您省略了語句 2,那么必須在循環(huán)內(nèi)提供 break。否則循環(huán)就無法停下來。這樣有可能令瀏覽器崩潰。請(qǐng)?jiān)诒窘坛躺院蟮恼鹿?jié)閱讀有關(guān) break 的內(nèi)容。

          語句 3

          通常語句 3 會(huì)增加初始變量的值。

          語句 3 也是可選的。

          語句 3 有多種用法。增量可以是負(fù)數(shù) (i--),或者更大 (i=i+15)。

          語句 3 也可以省略(比如當(dāng)循環(huán)內(nèi)部有相應(yīng)的代碼時(shí)):

          實(shí)例:

          var i=0,len=cars.length;

          for (; i<len; )

          {

          document.write(cars[i] + "<br>");

          i++;

          }

          for/In 循環(huán)

          JavaScript for/in 語句循環(huán)遍歷對(duì)象的屬性:

          實(shí)例

          var person={fname:"John",lname:"Doe",age:25};

          for (x in person)

          {

          txt=txt + person[x];

          }

          您將在有關(guān) JavaScript 對(duì)象的章節(jié)學(xué)到更多有關(guān) for / in 循環(huán)的知識(shí)。

          While 循環(huán)

          我們將在下一章為您講解 while 循環(huán)和 do/while 循環(huán)。

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          文來源:微信公眾號(hào):Node地下鐵 作者: 冰森

          出處:https://mp.weixin.qq.com/s/OudqDff3QvmBqIiD74LrTw


          主站蜘蛛池模板: 亚洲天堂一区在线| 国产福利一区二区三区| 日本一区二区三区在线视频| 国模一区二区三区| 国产成人欧美一区二区三区| 好爽毛片一区二区三区四无码三飞| 亚洲一区影音先锋色资源| 国产在线精品一区二区中文 | 国产SUV精品一区二区四| 精品香蕉一区二区三区| 日本v片免费一区二区三区 | 免费一区二区三区| 亚洲国产精品一区二区久| 欧美日韩综合一区二区三区| 亚洲一区二区三区在线播放| 一区二区三区视频在线观看| 国产乱码精品一区二区三区中| 欧美亚洲精品一区二区| 国产一区视频在线| 无码人妻精一区二区三区| 国产一区二区在线看| 人妻无码一区二区视频| 亚洲一区二区三区免费视频| 无码日韩人妻AV一区免费l| 中文字幕一区二区三区久久网站| 日韩在线一区视频| 亚洲福利视频一区| 精品国产一区二区三区久久蜜臀| 亚洲av无码片区一区二区三区| 无码国产亚洲日韩国精品视频一区二区三区| 精品人体无码一区二区三区| 日本国产一区二区三区在线观看 | 亚洲综合av永久无码精品一区二区 | 福利国产微拍广场一区视频在线 | 蜜桃视频一区二区三区在线观看 | 久久亚洲日韩精品一区二区三区 | 午夜精品一区二区三区在线视| 国产一区二区三区乱码网站| 人体内射精一区二区三区| 久久国产精品一区二区| 亚洲一区二区三区影院 |