欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在javascript中使用eventloop事件實(shí)現(xiàn)一個(gè)循環(huán)功能-創(chuàng)新互聯(lián)

本文章向大家介紹如何在javascript中使用event loop事件實(shí)現(xiàn)一個(gè)循環(huán)功能,主要包括如何在javascript中使用event loop事件實(shí)現(xiàn)一個(gè)循環(huán)功能的使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下。

創(chuàng)新互聯(lián)建站一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供網(wǎng)站制作、成都網(wǎng)站制作、成都網(wǎng)頁設(shè)計(jì)、重慶小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、成都app軟件開發(fā)公司是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!JavaScript是什么

JavaScript是一種直譯式的腳本語言,其解釋器被稱為JavaScript引擎,是瀏覽器的一部分,JavaScript是被廣泛用于客戶端的腳本語言,最早是在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動(dòng)態(tài)功能。

console.log('0')
setTimeout(function () {
 console.log('1');
});

new Promise(function(resolve,reject){
 console.log('2')
 resolve(3)
}).then(function(val){
 console.log(val)
})
console.log(4)

輸出結(jié)果: “0” “2” 4 3 “1”

今天主要是分析為什么輸出結(jié)果是這樣的?這就和 javascript 的執(zhí)行機(jī)制密切相關(guān)了.

Event Queue 和 Event Loop

javascript 是一門單線程的語言, 這就意味著在執(zhí)行代碼的時(shí)候, 都只有一個(gè)主線程來處理所有的任務(wù).

我們都知道 javascript 包括同步代碼和異步代碼, 那么 javascript 是怎么處理這兩種情況的呢?

  • 同步和異步任務(wù)分別進(jìn)入不同的執(zhí)行 場(chǎng)所, 同步的進(jìn)入主線程,異步的進(jìn)入 Event Table 并注冊(cè)函數(shù)

  • 當(dāng)指定的事情完成時(shí), Event Table 會(huì)將這個(gè)函數(shù)(回調(diào)函數(shù))移入 Event Queue

  • 主線程內(nèi)的任務(wù)執(zhí)行完畢為空, 會(huì)去 Event Queue 讀取對(duì)應(yīng)的函數(shù),進(jìn)入主線程執(zhí)行

  • 上述過程會(huì)不斷重復(fù), 也就是常說的 Event Loop(事件循環(huán))

這里我們引進(jìn)了 Event Queue 事件隊(duì)列這一概念. 所有異步操作的回調(diào)都會(huì)進(jìn)入到這里. 然后等到主線程空閑, 就會(huì)從這里調(diào)取回調(diào)執(zhí)行.

setTimeout

setTimeout 相信大家都有使用過, 可以延時(shí)執(zhí)行并且是異步執(zhí)行的.

但是有時(shí)候我們得到的結(jié)果往往是代碼實(shí)際執(zhí)行的時(shí)間比我們想要延時(shí)執(zhí)行的時(shí)間要久。這又是為什么呢?

這就和我們之前所說的 Event Loop 有關(guān)了, 我們可以來具體看下 setTimeout 的執(zhí)行步驟:

setTimeout(function () {
asyncFn()
}, 1000);

syncFn()
  • asyncFn 將異步執(zhí)行函數(shù)放在 Event Table, 并且開始計(jì)時(shí)

  • 開始執(zhí)行 syncFn, 但是 syncFn 可能需要處理的內(nèi)容很多, 執(zhí)行時(shí)間超過 1 秒, 但是計(jì)時(shí)還在繼續(xù)

  • 計(jì)時(shí)到達(dá) 1 秒, setTimeout 延時(shí)完成, asyncFn 進(jìn)入 Event Queue 事件隊(duì)列, 但是主線程還在執(zhí)行, 所以只能等待

  • syncFn 執(zhí)行完成, 此時(shí) asyncFn 從事件隊(duì)列中進(jìn)入主線程執(zhí)行

所以有時(shí)候會(huì)出現(xiàn)代碼實(shí)際執(zhí)行時(shí)間比延時(shí)時(shí)間長(zhǎng)的情況。

宏任務(wù)和微任務(wù)

之前我們說過異步任務(wù)會(huì)進(jìn)入到事件隊(duì)列中, 不同類型的任務(wù)會(huì)進(jìn)入到不同的隊(duì)列中, 比如宏任務(wù)會(huì)進(jìn)入到宏任務(wù)隊(duì)列中, 微任務(wù)會(huì)進(jìn)入到微任務(wù)隊(duì)列中.

我們只要記住 當(dāng)當(dāng)前執(zhí)行棧執(zhí)行完畢時(shí)會(huì)立刻先處理所有微任務(wù)隊(duì)列中的事件,然后再去宏任務(wù)隊(duì)列中取出一個(gè)事件。同一次事件循環(huán)中,微任務(wù)永遠(yuǎn)在宏任務(wù)之前執(zhí)行

這時(shí)候我們就可以解釋一開始的代碼執(zhí)行結(jié)果了:

  • 主線程執(zhí)行按順序代碼

  • 遇到 setTimeout, 回調(diào)進(jìn)入到宏任務(wù)隊(duì)列上

  • 遇到 Promise, 立即執(zhí)行, then 函數(shù)進(jìn)入到微任務(wù)隊(duì)列

  • 同步代碼執(zhí)行結(jié)束, 主線程檢查是否存在微任務(wù), 發(fā)現(xiàn) then, 執(zhí)行

  • 微任務(wù)執(zhí)行完畢, 再去查找宏任務(wù) setTimeout, 執(zhí)行

  • setTimeout 執(zhí)行結(jié)束, 檢查是否存在微任務(wù), 不存在, 結(jié)束.

到此這篇關(guān)于如何在javascript中使用event loop事件實(shí)現(xiàn)一個(gè)循環(huán)功能的文章就介紹到這了,更多相關(guān)的內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

網(wǎng)頁題目:如何在javascript中使用eventloop事件實(shí)現(xiàn)一個(gè)循環(huán)功能-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://aaarwkj.com/article12/icsgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站制作、外貿(mào)建站響應(yīng)式網(wǎng)站、虛擬主機(jī)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产综合中文字幕不卡| 美女福利视频一区二区| 国产精品亚洲欧美中字| 国产午夜福利一区在线| 日韩一二三四区精品电影免费播放| 国产高清自拍视频免费| 国模一区二区三区视频| 日韩永久免费av网站| av电影网站中文字幕| 国产三级伦理在线播放| 成年人在线观看免费观看| 18禁污污网站国产| 欧美精品国产亚洲另类| 夫妻性生活视频在线免费看| 亚洲国产精品久久久久国产精品| 成年人免费在线不卡视频| 开裆丝袜高跟啪啪高潮av| 蜜桃一区二区三区免费| 日韩中文字幕 在线播放| 亚洲免费精品一区二区三区四区| 国产一区二区三区在线视频播放 | 国产男女在线视频观看| 好色人妻在线播放中文字幕| 欧美精品一区二区精品久久| 深夜三级福利在线观看| 精品国产一区二区三区大| 国产精品中文第一字幕| 久久精品夜夜夜夜夜久久| 久久男女激情免费视频| 91精品国产综合久久男男| 国产成人亚洲欧美激情| 91超碰这里只有精品国产| 亚洲第一中文字幕久久| 亚洲熟女少妇视频自拍| 婷婷色悠悠,色悠悠激情啪啪| 亚洲成年人黄片在线播放| 亚洲最大黄色免费在线观看| 日韩不卡在线免费观看视频| 日本一区二区三区久久久| 九九视频免费在线播放| 国语精品对白交换日韩|