扫码关注官方订阅号
如题 还有JS中的,有点晕乎乎的
走同样的路,发现不同的人生
这么久都没人来回答你这个问题,我来抛个砖。
首先得搞清楚为什么要用回调函数——这个问题用 Baidu 搜索一下,结果一堆一堆的。
一般情况下回调是用在异步处理上,比如说,你向服务器发起一个请求,由于网络比较慢,采用同步代码的话,界面就是假死在那里一直等服务器返回数据,为了避免这个问题,就做异步,但是如果用异步,怎么能知道服务器把数据返回回来了,然后立即处理数据呢?如果说写个循环同步等待,那跟没做异步一样,最好的办法就丢个算法给异步处理过程,让它在得到数据之后执行这个算法——算法靠什么实现?函数!
当然,架设不是专门为异步设计的,只要需要传递算法的地方就可以用回调,比如 C# 中的事件处理就是一种回调方式,Java中的 Listener 对象,虽然不是传递的函数,但实质仍然是回调。
既然你提到了 javascript,那不妨用 jQuery 的 ajax 来举个例
javascript$button.disable(); $.getJSON(aUrl, data).done(function(data) { console.log("success with data", data); }).fail(function() { console.log("fail"); }).always(function() { $button.enable(); })
javascript
$button.disable(); $.getJSON(aUrl, data).done(function(data) { console.log("success with data", data); }).fail(function() { console.log("fail"); }).always(function() { $button.enable(); })
这段代码并不完整,所以只能作示例,不能运行。假充它在某个按钮 ($button) 按下时调用,它模拟了这样一个过程:
$button
成功执行的回调带1个参数,就是取回的数据;失败执行的回调不带参数(实际可以带3个参数,具体参考 jQuery 文档);但不管成功失败,最后都需要把按钮再变为可用。
http://www.dozer.cc/2012/03/async-and-await-in-web-application.html
可以到这里测试一下C#在线编译执行
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这么久都没人来回答你这个问题,我来抛个砖。
首先得搞清楚为什么要用回调函数——这个问题用 Baidu 搜索一下,结果一堆一堆的。
一般情况下回调是用在异步处理上,比如说,你向服务器发起一个请求,由于网络比较慢,采用同步代码的话,界面就是假死在那里一直等服务器返回数据,为了避免这个问题,就做异步,但是如果用异步,怎么能知道服务器把数据返回回来了,然后立即处理数据呢?如果说写个循环同步等待,那跟没做异步一样,最好的办法就丢个算法给异步处理过程,让它在得到数据之后执行这个算法——算法靠什么实现?函数!
当然,架设不是专门为异步设计的,只要需要传递算法的地方就可以用回调,比如 C# 中的事件处理就是一种回调方式,Java中的 Listener 对象,虽然不是传递的函数,但实质仍然是回调。
既然你提到了 javascript,那不妨用 jQuery 的 ajax 来举个例
这段代码并不完整,所以只能作示例,不能运行。假充它在某个按钮 (
$button
) 按下时调用,它模拟了这样一个过程:成功执行的回调带1个参数,就是取回的数据;失败执行的回调不带参数(实际可以带3个参数,具体参考 jQuery 文档);但不管成功失败,最后都需要把按钮再变为可用。
http://www.dozer.cc/2012/03/async-and-await-in-web-application.html
可以到这里测试一下
C#在线编译执行