亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

javascript延時函數(shù) js延遲1秒的方法( 二 )


相同點:
都用作先進先出隊列相異點:
每個 JavaScript Runtime 可以有多個 Job Queue , 但只有一個 Event Loop Queue當 JavaScript Engine 處理完當前 chunk 后 , 優(yōu)先執(zhí)行所有的 Job Queue , 然后再處理 Event Loop QueueES6 中 , 一個 Promise 就是一個 PromiseJob , 一種 Job 。
再來觀察一段小程序:
console.log("A");setTimeout(() => {console.log("A - setTimeout");}, 0);new Promise((resolve) => {resolve();}).then(() => {return console.log("A - Promise 1");}).then(() => {return console.log("B - Promise 1");});new Promise((resolve) => {resolve();}).then(() => {return console.log("A - Promise 2");}).then(() => {return console.log("B - Promise 2");}).t**粗體文字**hen(() => {return console.log("C - Promise 2");});console.log("AA");在原生支持 Promise 的環(huán)境 , 輸出是這樣:
A
AA
A – Promise 1
A – Promise 2
B – Promise 1
B – Promise 2
C – Promise 2
A – setTimeout
理解這個輸出:
A 與 AA 最先輸出 , 因為它們不是異步任務(wù) , 屬于第一個 chunk 。Promise 1 與 Promise 2 先于 setTimeout 執(zhí)行 , 因為 Job Queue 的執(zhí)行優(yōu)先于 Event Loop Queue 。Promise 1 與 Promise 2 各自的輸出都是順序的 , 因為 Job Queue 是先進先出隊列 , 同一 Job Queue 中的任務(wù)順序執(zhí)行 。Promise 1 與 Promise 2 的后續(xù)任務(wù)是交錯的 , 因為 Promise 1 與 Promise 2 都是獨立的 PromiseJob(job 的其中一種) , 屬于不同的 Job Queue , 它們之間的順序規(guī)范中沒有規(guī)定 。并發(fā)文章開頭 , 我說「簡單地說 , JavaScript 是單線程執(zhí)行的語言」 , 現(xiàn)在可以說得稍微復雜一點了:JavaScript Engine 對 JavaScript 程序的執(zhí)行是單線程的 , 但是 JavaScript Runtime(整個宿主環(huán)境)并不是單線程的;而且 , 幾乎所有的異步任務(wù)都是并發(fā)的 , 例如多個 Job Queue、Ajax、Timer、I/O(Node)等等 。
上面說的是 JavaScript Runtime 層面 , JavaScript 執(zhí)行本身 , 也有一些特殊情況 , 例如:一個 Web Worker 或者一個跨域的 iframe , 也是獨立的線程 , 有各自的內(nèi)存空間(棧、堆)以及 Event Loop Queue 。要與這些不同的線程通信 , 只能通過 postMessage 。一次 postMessage 就是在另一個線程的 Event Loop Queue 中加入一條消息 。
參考資料Concurrency model and Event Loop
ECMAScript? 2015 Language Specification
You Don’t Know JS: Async & Performance
JavaScript異步編程:設(shè)計快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: