溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript是不是同步的

發布時間:2022-08-24 17:34:46 來源:億速云 閱讀:127 作者:iii 欄目:web開發

這篇文章主要介紹“javascript是不是同步的”,在日常操作中,相信很多人在javascript是不是同步的問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”javascript是不是同步的”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

JavaScript是同步的;JavaScript始終是同步的并且是單線程的,只有在可以進行ajax調用的意義上是異步的;同步表示如果正在頁面上執行JavaScript代碼塊,則該頁面上當前將不會執行其他JavaScript。

如何快速入門VUE3.0:進入學習

本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。

javascript是同步的嗎

JavaScript始終是同步的并且是單線程的。

如果您正在頁面上執行JavaScript代碼塊,則該頁面上當前將不會執行其他JavaScript。

JavaScript僅在可以進行Ajax調用的意義上是異步的。

Ajax調用將停止執行,其他代碼將能夠執行,直到調用返回(成功或其他)為止,此時回調將同步運行。此時將不會再運行其他代碼。它不會中斷當前正在運行的任何其他代碼。

JavaScript計時器與此相同類型的回調一起運行。

將JavaScript描述為異步可能會引起誤解。準確地說JavaScript是同步的且具有各種回調機制的單線程。

jQuery在Ajax調用上有一個選項可以使它們同步(帶有該async: false選項)。初學者可能會不正確地使用它,因為它允許使用一種更傳統的編程模型,而這種模型可能會更習慣。有問題的原因是此選項將阻止頁面上的 所有

JavaScript,直到完成為止,包括所有事件處理程序和計時器。

擴展知識

Javascript語言是一門單線程的語言

單線程和異步確實不能同時成為一個語言的特性。js選擇了成為單線程的語言,所以它本身不可能是異步的。因為瀏覽器只分配給js一個主線程,用來執行那些函數,一次只能執行一個,這些任務形成一個任務隊列排隊等候執行,但前端的某些任務是非常耗時的,比如網絡請求,定時器和事件監聽,如果讓他們和別的任務一樣,都老老實實的排隊等待執行的話,執行效率會非常的低,甚至導致頁面的假死。

JavaScript單線程如何實現異步效果

所以,瀏覽器為這些耗時任務開辟了另外的線程,主要包括http請求線程,瀏覽器定時觸發器,瀏覽器事件觸發線程。宿主環境(瀏覽器)通過事件驅動方式使得js具備了異步的屬性 。

所有任務可以分成兩種,一種是同步任務(synchronous),另一種是異步任務(asynchronous)。同步任務指的是,在主線程上排隊執行的任務,只有前一個任務執行完畢,才能執行后一個任務;異步任務指的是,不進入主線程、而進入"任務隊列"(task queue)的任務,只有等主線程任務執行完畢,"任務隊列"開始通知主線程,請求執行任務,該任務才會進入主線程執行。

CPU忙不過來,倒也算了,但是很多時候CPU是閑著的,因為IO設備(輸入輸出設備)很慢(比如Ajax操作從網絡讀取數據),不得不等著結果出來,再往下執行。

具體來說,異步運行機制如下:

所有同步任務都在主線程上執行,形成一個執行棧(execution context stack)。

主線程之外,還存在一個"任務隊列"(task queue)。只要異步任務有了運行結果,就在"任務隊列"之中放置一個事件。

一旦"執行棧"中的所有同步任務執行完畢,系統就會讀取"任務隊列",那些的異步任務,進入執行棧,開始執行。

主線程不斷重復上面的第三步。

到此,關于“javascript是不是同步的”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女