[英]Callbacks as Objects - how it relates to asynchronous programming in JavaScript
我在這里閱讀了回調函數,並了解到JavaScript是一種單線程同步語言。
這意味着,如果要從數據庫收集數據,則必須等待例程完成才能執行更多代碼。 這是真的? 如果用戶按下按鈕以在同一腳本文件中調用其他函數,將會發生什么?
要使其異步,可以使用回調。 這里的異步意味着回調中的一段代碼將在調用之前“等待”事件,但不會創建新線程。
作為使JavaScript回調異步的Object
又有什么用呢?
它與等待事件一樣嗎?
的確,使用Javascript,如果要調用數據庫,通常必須等待數據庫響應(即,往返Pluto ),然后代碼才能繼續執行。 這稱為“阻止”調用。
回調允許您執行阻塞調用,但同時您也要說:“阻塞調用結束時執行此代碼,但不要等待它發生。” 因此,您的程序繼續執行。 阻塞調用完成后,您將在回調中指定的代碼(尚未運行)將執行。 這可能幾乎是立即的,也可能是稍后的時間。
使用Javascript,其余代碼將完成執行,然后將執行將由阻塞調用完成觸發的第一個回調,依此類推,直到執行完所有回調為止。 屆時該線程將被關閉。
請注意,只有回調代碼是“等待事件”。
因此,執行順序如下所示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.