簡體   English   中英

回調函數和異步應用

[英]callback function and asynchronous application

我剛剛讀過“ JavaScript:好的部分”這本書。
回調函數部分有一個例子

壞方法:

   request = prepare_the_request();
    response = send_request_synchronously(request);
    display(response);

推薦方式:

request = prepare_the_request();
send_request_asynchronously(request, function(response){
    display(response);
  }):


問題是我無法理解壞方法示例的區別和效果。
誰能以簡單的方式解釋它?

同步方法將停止程序。 異步方法可以繼續下去,並在完成時通知您。 例如,這在瀏覽器中尤其糟糕-如果您的程序被阻止,則其他任何事情都無法完成,包括響應按鈕,重新繪制屏幕,​​為漩渦狀的GIFS設置動畫……什么都沒有。

打個比方,讓我們看一下告訴您的孩子在晚餐前洗桌子。 在異步情況下,您告訴孩子清理桌子,然后看着他。 鍾聲響起,客人來了,但您正忙着看着孩子打掃桌子。 他做完后,你點點頭,然后去開門,帶上午餐。 客人們脾氣暴躁,因為你讓他們在外面等着,午餐很冷。

在異步情況下,您告訴孩子清理桌子並告訴他什么時候完成。 鈴響了; 您接聽門,向客人展示。孩子打電話給您(“回叫”),他已經完成了餐桌清潔工作,因此您將熱食帶到了餐桌上,每個人都很高興。

主要區別在於,以糟糕的方式 ,同步請求將阻塞UI,並且瀏覽器可能會保持無響應,直到請求返回為止。

如果發送異步請求,瀏覽器將使用另一個線程,並且主線程可以繼續執行代碼,而不會阻塞UI。 這種方法的挑戰在於,發送請求后,不能立即運行display(response) 它必須在請求從服務器返回后運行。 這就是為什么我們創建一個CALLBACK函數,一旦響應返回它將被調用。

有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM