日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

javascript之回调函数小知识

發布時間:2025/4/16 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript之回调函数小知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Javascript異步編程方法------“回調函數”

這是異步編程最基本的方法。

軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的接口)。回調和異步調用的關系非常緊密,通常我們使用回調來實現異步消息的注冊,通過異步調用來實現消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎

首先說一下什么是個回調函數?

? ? ? 在計算機程序設計中,回調函數,或簡稱回調,是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用。這一設計允許了底層代碼調用在高層定義的子程序。一般用于截獲消息、獲取系統信息或處理異步事件。

?

回調函數實現的機制是

?

⑴定義一個回調函數;

⑵提供函數實現的一方在初始化的時候,將回調函數的函數指針注冊給調用者;

⑶當特定的事件或條件發生的時候,調用者使用函數指針調用回調函數對事件進行處理。

簡單的說我們們可以像使用變量一樣使用函數,作為另一個函數的參數,在另一個函數中作為返回結果,在另一個函數中調用它。當我們作為參數傳遞一個回調函數給另一個函數時,我們只傳遞了這個函數的定義,并沒有在參數中執行它。

當包含(調用)函數擁有了在參數中定義的回調函數后,它可以在任何時候調用(也就是回調)它。

?

回調函數是閉包的
當作為參數傳遞一個回調函數給另一個函數時,回調函數將在包含函數函數體內的某個位置被執行,就像回調函數在包含函數的函數體內定義一樣。這意味著回調函數是閉包的,之后也會介紹關于閉包的一些知識。眾所周知,閉包函數可以訪問包含函數的作用域,所以,回調函數可以訪問包含函數的變量,甚至是全局變量。

?

假定有兩個函數f1和f2,后者等待前者的執行結果。

f1();

f2();

如果f1是一個很耗時的任務,可以考慮改寫f1,把f2寫成f1的回調函數。

function f1(callback){setTimeout(function () {// f1的任務代碼callback();

}, 1000);

}

執行代碼就變成下面這樣:

f1(f2);

采用這種方式,我們把同步操作變成了異步操作,f1不會堵塞程序運行,相當于先執行程序的主要邏輯,將耗時的操作推遲執行。

回調函數的優點是簡單、容易理解和部署,缺點是不利于代碼的閱讀和維護,各個部分之間高度耦合( Coupling ),流程會很混亂,而且每個任務只能指定一個回調函數。

?

有以下需求時你可以考慮使用回調:

?

  • 避免重復代碼?(DRY—Do Not Repeat Yourself)
  • 在你需要更多的通用功能的地方更好地實現抽象(可處理各種類型的函數)。
  • 增強代碼的可維護性
  • 增強代碼的可讀性

我們在JavaScript中經常使用回調函數時注意以下幾點,尤其是現在的web應用開發,在第三方庫和框架中

  • 異步執行(例如讀文件,發送HTTP請求)
  • 事件監聽和處理
  • 設置超時和時間間隔的方法
  • 通用化:代碼簡潔?
  • 有更多定制的功能

在這里我說的比較片面,有不足之處請諒解,同時也希望讀者可以多多的提意見,以便改進

?

轉載于:https://www.cnblogs.com/jtr122624520/p/5909088.html

總結

以上是生活随笔為你收集整理的javascript之回调函数小知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。