[英]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.