真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javascript是如何實(shí)現(xiàn)異步的呢-創(chuàng)新互聯(lián)

javascript是如何實(shí)現(xiàn)異步的呢,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

目前成都創(chuàng)新互聯(lián)已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、寧江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

我們知道javascript是單線程的,但是為什么有很多的事件處理卻是異步的呢?javascript的單線程的意思是,只有一個(gè)主線程來(lái)解釋執(zhí)行javascript代碼。那么javascript是如何實(shí)現(xiàn)異步的呢?

異步的過(guò)程

首先,主線程發(fā)起一個(gè)異步請(qǐng)求,相應(yīng)的工作線程就接收這個(gè)請(qǐng)求并進(jìn)行處理,期間,主線程發(fā)完請(qǐng)求之后就去干別的事情去了。等到工作線程的處理有了結(jié)果,瀏覽器內(nèi)部就分配一個(gè)線程出來(lái),通知主線程,剛剛發(fā)起的異步請(qǐng)求有了結(jié)果(這個(gè)通知過(guò)程其實(shí)是將回調(diào)函數(shù)推入消息隊(duì)列中,也叫事件隊(duì)列,也叫任務(wù)隊(duì)列),等到主線程處理完了當(dāng)前調(diào)用棧中的任務(wù),就會(huì)從這個(gè)消息隊(duì)列中讀取消息,也就是調(diào)用回調(diào)。這樣就完成了一次讀取消息的循環(huán)。

而javascript執(zhí)行代碼的機(jī)制就是不斷地從消息隊(duì)列中讀取消息回調(diào)并執(zhí)行的過(guò)程。因?yàn)槊織l消息(或者說(shuō)每個(gè)回調(diào))都是由相應(yīng)的事件(比如鼠標(biāo)點(diǎn)擊,ajax,定時(shí)器事件等)觸發(fā)的,所以這個(gè)過(guò)程稱之為事件循環(huán)。

異步的任務(wù)

上面把消息推送到事件隊(duì)列的這個(gè)過(guò)程中,如果工作線程處理的任務(wù)既有宏任務(wù),也有微任務(wù),則優(yōu)先處理宏任務(wù),然后把對(duì)應(yīng)宏任務(wù)的消息推送到宏任務(wù)消息隊(duì)列中;然后工作線程再處理微任務(wù),接著把對(duì)應(yīng)微任務(wù)的消息推送到微任務(wù)的消息隊(duì)列中。

注意,宏任務(wù)消息隊(duì)列與微任務(wù)消息隊(duì)列不是同一個(gè)隊(duì)列

當(dāng)主線程處理完當(dāng)前調(diào)用棧中的任務(wù)后,優(yōu)先從微任務(wù)消息隊(duì)列中讀取消息,也就是先執(zhí)行微任務(wù)的回調(diào),等到微任務(wù)的消息隊(duì)列為空,再去讀取宏任務(wù)的消息隊(duì)列。

注意區(qū)分推送順序和讀取順序。

由此,js中的任務(wù)分為同步任務(wù)和異步任務(wù)

同步任務(wù)是指:當(dāng)前主線程將要消化執(zhí)行的任務(wù),這些任務(wù)一起形成執(zhí)行棧(executioncontextstack)。

異步任務(wù)是指:不進(jìn)入主線程,而是進(jìn)入任務(wù)隊(duì)列(taskqueque),即不會(huì)馬上進(jìn)行的任務(wù)。

關(guān)于javascript是如何實(shí)現(xiàn)異步的呢問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


網(wǎng)頁(yè)名稱:javascript是如何實(shí)現(xiàn)異步的呢-創(chuàng)新互聯(lián)
地址分享:http://weahome.cn/article/ddcgsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部