欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 軟件研發 > JavaScript是單線程語言嗎?

JavaScript是單線程語言嗎?

2020-07-21 14:43:12 | 來源:中培企業IT培訓網

如果使用Java腳本已有一段時間,則可能會碰到它是一種單線程語言的短語。那么JavaScript是單線程語言嗎?Javascript引擎在具有內存堆和調用堆棧的V8引擎上運行。JS是一個單線程,這意味著一次只執行一個語句。在我們深入研究它在單線程上運行的含義之前。我想先介紹一下可以幫助您理解的術語。本文將以最簡單的方式進行解釋。為了更好地理解這一點,需要了解一種稱為堆棧的數據結構。

同步執行通常是指按順序執行的代碼。在同步編程中,程序一行一行地執行,一次一行。每次調用一個函數時,程序執行都會等到該函數返回后再繼續執行下一行代碼。舉例來說,您正在呼叫某人,并且正在等待他們接聽,以便您可以與他們交談。在他們拿起電話之前,您沒有做任何其他事情,可以順序執行請求。

const one() => {

const two() => {

console.log('5');

}

two();

}

那么,在調用堆棧下會發生什么呢?

調用堆棧的工作是填寫指令并在執行指令時彈出指令。

Javascript是一種單線程語言,可以是非阻塞的。單線程意味著它只有一個調用堆棧。調用堆棧頂部的所有內容都將首先運行。

在以上程序中,功能按順序運行。

如果我們有一項繁重的工作需要怎么辦?我們應該讓用戶等到該過程結束嗎?

const one() {

console.log("Hello");

}const two () {

for(i=0; i<= 100000000000000000000000; i++){

}const three(){

console.log("World");

}

one();

two();

three();

考慮上面的示例,如果我們的第二個函數必須循環遍歷大量數字該怎么辦。這是否意味著three()必須等到執行two()。

在我們的小示例中,這可能并不意味著什么,但是如果我們必須在一個真實的項目中實施,那么在第一個過程完成之前,用戶可能無法執行任何操作。

異步執行是指未按照代碼中出現的順序運行。在異步編程中,程序不會等待任務完成,而是可以繼續執行下一個任務。

舉個例子:您打電話給某人,而在等待他們接聽電話的同時,您也在跑腿。

不同的語言有不同的方式來實現異步。最受歡迎的是通過多線程。簡而言之,Java通過創建一個子線程來實現多線程,該子線程執行自己的單獨執行,然后與父線程合并回去。但是,這可能會遇到稱為死鎖的問題,可以使用各種防止死鎖的機制來解決。

從那以后,我們關注用Java腳本實現異步。讓我們看看我們如何做到這一點。嘗試在控制臺中運行它,看看會發生什么。

console.log('1');

setTimeout(()=> {console.log('2')}, 3000);console.log('3');

  您可能會看到1或者3并短暫出現2。為什么會這樣呢?

簡而言之,JavaScript的異步實現是通過調用堆棧,回調隊列以及Web API和事件循環來完成的。

如我們前面所見,調用堆棧作業是檢查堆棧頂部的指令并執行它。

事件循環的作用是連續檢查是否發生了事件,例如單擊鼠標或鍵盤擊鍵,以便將其發送到調用堆棧。當然,您希望鼠標單擊的執行優先于圖像加載。

在Javascript中,所有指令都放在調用堆棧中。當執行指針到達setTimeout時,引擎將其視為Web API指令并將其彈出并發送給Web API,并且調用堆棧將繼續執行其余指令。完成Web API的執行后,它將到達回調隊列。

引擎檢查調用堆棧是否為空。如果為空,則在我們的情況下檢查回調隊列,其中有setTimeout的響應。回調隊列將其發送到回調堆棧,并執行指令。

考慮此問題的另一種方法是在發出API請求時。假設您的網站需要從服務器獲取圖像。您的網站是否應該在圖像到達之前拒絕加載其他部分?那將是糟糕的用戶體驗。

當調用堆棧看到它需要獲取圖像時,它將彈出并發送到WebAPI,然后繼續執行其余功能。圖像請求的響應存儲在調用堆棧隊列中。

當調用堆棧為空時,連續運行的事件循環將查看調用堆棧隊列(如果有)。如果是這樣,則在我們的情況下是圖像請求的響應。它將其放在調用堆棧上并執行指令。

此過程的好處是JavaScript無需擔心CPU正在運行多少個內核或節點。此實現只有一個調用堆棧。以上就是關于JavaScript是單線程語言嗎的全部內容,想了解更多關于JavaScript的信息,請繼續關注我們吧。

主站蜘蛛池模板: 欧美 国产 日韩 另类 视频区 | 男人把女人桶到爽免费应用 | 免费毛片手机在线播放 | 国产成人aa在线视频 | 亚洲国产成人精品无码区在线播放 | 又湿又紧又大又爽A视频 | 狠狠色综合久久丁香婷婷 | 欧美性欧美巨大黑白大战 | 成人午夜性A级毛片免费 | 国产成人A人亚洲精品无码 日本免费a∨片免费 | 日本十八禁视频无遮挡 | 潮喷失禁大喷水aⅴ无码 | 中文字幕 成人 | 成人午夜福利视频镇东影视 | 熟妇女人妻丰满少妇中文字幕 | 亚洲日韩精品AV无码麻豆 | 日韩小片| 夜夜躁狠狠躁日日躁2022 | 日本少妇毛茸茸高潮 | 亚洲色一色噜一噜噜噜人与 | 精品国产一区二区三区色欲 | 亚洲交友中心首页 | 在线久草视频 | 亚洲不卡av一区二区三区 | 在线精品一区二区 | 丰满少妇被猛烈进入A片 | 国产情侣作爱视频免费观看 | 亚洲国产精品自在拍在线播放蜜臀 | 亚洲欧美不卡视频在线播放 | 2021国内精品久久久久精免费 | 蜜臀ab | 日韩爽爽视频 | 永久免费观看午夜成人网站 | 亚洲Aⅴ无码专区在线观看春色 | 亚洲天天做日日做天天欢毛片 | 国产精品123 | 色噜噜亚洲男人的天堂 | 色偷偷偷在线视频播放 | 亚洲香蕉网久久综合影视 | av在线免费观看一区二区 | 色播影院私人影院免费 |