教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是回調函數(shù)?【Web前端面試題】

更新時間:2022年05月09日11時31分 來源:傳智教育 瀏覽次數(shù):

  軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用

  同步調用是一種阻塞式調用,調用方要等待對方執(zhí)行完畢才 返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;

  異步調用是一種類似消息或事件的機制,不過它的 調用方向剛好相反,接口的服務在收到某種訊息或發(fā)生某種事件時,會主動通知客戶方(即調用客戶方的接口)?;卣{和異步調用的關系非常緊密,通常我們使用回 調來實現(xiàn)異步消息的注冊,通過異步調用來實現(xiàn)消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎,因此,下面我們著重討論回調機制在 不同軟件架構中的實現(xiàn)

  回調函數(shù)就是一個通過函數(shù)指針調用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調用其所指向的函數(shù)時,我們就說這是回調函數(shù)?;卣{函數(shù)不是由該函數(shù)的實現(xiàn)方直接調用,而是在特定的事件或條件發(fā)生時由另外的一方調用的,用于對該事件或條件進行響應。

  案例:

#include<stdio.h>
//callbackTest.c
//1.定義函數(shù)onHeight(回調函數(shù))
//@onHeight 函數(shù)名
//@height   參數(shù)
//@contex   上下文
void onHeight(double height, void *contex)
{
    printf("current height is %lf", height);
}
//2.定義onHeight函數(shù)的原型
//@CallbackFun 指向函數(shù)的指針類型
//@height      回調參數(shù),當有多個參數(shù)時,可以定義一個結構體
//@contex      回調上下文,在C中一般傳入nullptr,在C++中可傳入對象指針
typedef void (*CallbackFun)(double height, void *contex);
//定義全局指針變量
CallbackFun m_pCallback;
//定義注冊回調函數(shù)
void registHeightCallback(CallbackFun callback, void *contex)
{
    m_pCallback = callback;
}
//定義調用函數(shù)
void printHeightFun(double height)
{
    m_pCallback(height, NULL);
}
//main函數(shù)
int main()
{
    //注冊回調函數(shù)onHeight
    registHeightCallback(onHeight, NULL);
    //打印height
    double h = 99;
    printHeightFun(99);
}




猜你喜歡:

什么是閉包,如何使用閉包?

JavaScrit splice()方法如何使用?

前端與移動開發(fā):js對閉包的深入理解

JavaScript數(shù)組類型檢測的方法

傳智教育前端與移動開發(fā)培訓課程

0 分享到:
和我們在線交談!