javascript 为什么要用callback传函数, 而不直接在这个函数里调用另一个函数?

javascript 为什么要用callback传函数, 而不直接在这个函数里调用另一个函数


GCT1015
浏览 750回答 3
3回答

慕码人8056858

通俗的讲就是被调用的函数不知道你要做什么, 你需要将执行的操作作为回调函数传入比如插件, 当插件执行时你需要自定义一些操作, 插件开发者不知道你需要什么操作, 只能预留一个回调函数接口,供你传入回调函数,例如你写了一个下拉框插件, 功能是将模拟select操作, 那么当onchange的时候是需要使用者根据需求去处理的, 而你的插件是要给很多人用的, 你不知道每个人onchange的时候要做什么事情, 这个时候你在onchange你判断一下是否有A这个函数,有的话就调用,然后继续处理接下来的逻辑. , 用户如果在onchange的时候有需求, 传入A的实现即可. ,就相当于执行用户的操作了, 就叫回调函数.

斯蒂芬大帝

<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就称作回调函数,是不是很好理解?那有人会说我为什么不可以把b的调用放到main函数里呢?确实可以,但是那样你的main方法就只能调用b了。这里我们将b传递个main,或者a传递个main,那main里面的callback方法就是动态的回调函数。优点就在这里。

跃然一笑

我的理解是javascript本身不提供多线程功能,但是需要发送异步请求,异步请求是没办法顺序执行的,回调函数一般是为了处理这种非同步请求而设计的
打开App,查看更多内容
随时随地看视频慕课网APP