簡體   English   中英

是否需要將javascript回調函數作為參數傳遞?

[英]Is passing a javascript callback function as a parameter required?

到目前為止,在我讀過的所有文章中,回調函數都作為參數傳遞給其他函數:

function mycallback(){
    //dosomething
}

function mainfunc(mycallback){
    //do something else
    mycallback();
}

mainfunc(mycallback);

正如您所期望的那樣,效果很好。 我的問題是是否要求將回調函數作為參數傳遞給mainfunc? 看來如果您忽略了這一點:

function mycallback(){
    //dosomething
}

function mainfunc(){
    //do something else
    mycallback();
}

mainfunc();

它工作正常,並且與第一個示例相同。 但是我看不到人們以這種方式使用回調。 有什么原因嗎? 我想念什么?

當您執行異步任務時,最好使用回調。

假設mainfunc是異步操作。

  • 在第一個示例中,您將特定的回調傳遞給mainfunc 這使調用者可以靈活地分配在操作后要執行的功能。

  • 第二個示例, 對回調進行了硬編碼 除非您有理由這樣做(如預定的后處理功能),否則這是不靈活的。

從技術上講,是的,您可以像這樣使用您的函數。 傳遞函數作為參數的原因與傳遞任何東西作為參數的原因相同。

mainfunc(eatSevenBurritos);
mainfunc(eatTwoChimichangas);

在某些情況下,通過mainfunc時,您可能會想吃7個墨西哥卷餅。 也許在其他條件下,您寧願在通過mainfunc時吃2個chimichangas。

如果您總是要運行相同的功能,那么請繼續並在其中進行編碼。 增加毫無意義的復雜性毫無意義。 但是,如果您需要更改該行為,則需要將其視為參數。

當人們談論“一流的職能”時,這種行為就是他們的意思。 能夠將函數視為參數。 因為行為是一種數據類型。

如果希望單個函數處理所有回調,則第二種方法可以很好地工作。

通常,當您調用使用回調的方法時,您希望它在回調中的不同之處取決於調用的時間和位置。 不必在單個回調函數中處理所有不同的情況(然后必須知道它是哪種情況),您可以針對每種特定情況簡單地使用一個回調函數。

暫無
暫無

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

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