3 回答
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個贊
通俗的講就是被調(diào)用的函數(shù)不知道你要做什么, 你需要將執(zhí)行的操作作為回調(diào)函數(shù)傳入
比如插件, 當(dāng)插件執(zhí)行時你需要自定義一些操作, 插件開發(fā)者不知道你需要什么操作, 只能預(yù)留一個回調(diào)函數(shù)接口,供你傳入回調(diào)函數(shù),
例如你寫了一個下拉框插件, 功能是將模擬select操作, 那么當(dāng)onchange的時候是需要使用者根據(jù)需求去處理的, 而你的插件是要給很多人用的, 你不知道每個人onchange的時候要做什么事情, 這個時候你在onchange你判斷一下是否有A這個函數(shù),有的話就調(diào)用,然后繼續(xù)處理接下來的邏輯. , 用戶如果在onchange的時候有需求, 傳入A的實(shí)現(xiàn)即可. ,就相當(dāng)于執(zhí)行用戶的操作了, 就叫回調(diào)函數(shù).
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個贊
<html>
<head>
<title>Callback function test</title>
<script language="javascript" type="text/javascript">
function main(callback)
{
alert("I am main function");
alert("Invoke callback function..");
callback();
}
function b(){
alert("I am callback function: b");
}
function c(){
alert("I am callback function: c");
}
function test() {
main(b);
main(c);
}
</script>
</head>
<body>
<button onClick="test()">click me</button>
</body>
</html>
這里面main(b),那么b就稱作回調(diào)函數(shù),是不是很好理解?那有人會說我為什么不可以把b的調(diào)用放到main函數(shù)里呢?確實(shí)可以,但是那樣你的main方法就只能調(diào)用b了。這里我們將b傳遞個main,或者a傳遞個main,那main里面的callback方法就是動態(tài)的回調(diào)函數(shù)。優(yōu)點(diǎn)就在這里。
TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊
我的理解是javascript本身不提供多線程功能,但是需要發(fā)送異步請求,異步請求是沒辦法順序執(zhí)行的,回調(diào)函數(shù)一般是為了處理這種非同步請求而設(shè)計的
- 3 回答
- 0 關(guān)注
- 841 瀏覽
添加回答
舉報
