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

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

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

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

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

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

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

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

  案例:

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




猜你喜歡:

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

JavaScrit splice()方法如何使用?

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

JavaScript數組類型檢測的方法

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

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