亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用通俗易懂的英語解釋回調?它們與調用一個函數和另一個函數有什么不同?

如何用通俗易懂的英語解釋回調?它們與調用一個函數和另一個函數有什么不同?

幕布斯7119047 2019-08-03 11:03:37
如何用通俗易懂的英語解釋回調?它們與調用一個函數和另一個函數有什么不同?如何用通俗易懂的英語解釋回調?它們與調用函數的一個函數和另一個函數、從調用函數獲取上下文的函數有什么不同?如何向新手程序員解釋他們的能力?
查看完整描述

4 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

通常,應用程序需要根據其上下文/狀態執行不同的功能。為此,我們使用一個變量來存儲有關要調用的函數的信息。?根據其需要,應用程序將使用要調用的函數的信息來設置該變量,并使用相同的變量調用該函數。

在javascript中,示例如下。在這里,我們使用方法參數作為一個變量來存儲有關函數的信息。

function processArray(arr, callback) {
    var resultArr = new Array(); 
    for (var i = arr.length-1; i >= 0; i--)
        resultArr[i] = callback(arr[i]);
    return resultArr;
}

var arr = [1, 2, 3, 4];
var arrReturned = processArray(arr, function(arg) {return arg * -1;});
// arrReturned would be [-1, -2, -3, -4]


查看完整回答
反對 回復 2019-08-05
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

我要盡量讓這件事簡單明了。“回調”是由另一個函數調用的任何函數,該函數將第一個函數作為參數。在很多情況下,“回調”是在某物會發生的。那,那個某物可以被稱為“事件”的程序員-說話。

想象一下這樣的場景:您期待幾天后就會有一個包。這個包裹是送給你鄰居的禮物。因此,一旦你得到了包裹,你就想把它帶給鄰居。你出城了,所以你給你的配偶留下指示。

你可以告訴他們把包裹拿來給鄰居。如果你的配偶像電腦一樣笨,他們會坐在門口等包裹來(什么也不做),一旦它來了,他們就會把它帶給鄰居。但還有更好的辦法。告訴你的配偶,一旦他們收到包裹,他們就應該把包裹送到鄰居那里。然后,他們可以正常地生活,直到他們收到包裹。

在我們的示例中,包的接收是“事件”,而將它帶給鄰居的是“回調”。你的配偶“運行”你的指示,只帶包裹過來。什么時候包裹到了。好多了!

這種想法在日常生活中是顯而易見的,但計算機卻沒有同樣的常識。考慮程序員通常如何寫入文件:

fileObject = open(file)
# now that we have WAITED for the file to open, we can write to it
fileObject.write("We are writing to the file.")
# now we can continue doing the other, totally unrelated things our program does

在這里,我們等待文件打開,然后再寫到它。這個“阻塞”執行流程,而我們的程序不能做它可能需要做的任何其他事情!如果我們可以這樣做呢:

# we pass writeToFile (A CALLBACK FUNCTION!) to the open function
fileObject = open(file, writeToFile)
# execution continues flowing -- we don't wait for the file to be opened
# ONCE the file is opened we write to it, but while we wait WE CAN DO OTHER THINGS!

事實證明,我們是用一些語言和框架來做到這一點的。太酷了!檢查Node.js用這種思維來獲得一些真正的實踐。




查看完整回答
反對 回復 2019-08-05
  • 4 回答
  • 0 關注
  • 460 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號