callBack

function testFunction(val1,call){
console.log(val1);
call(val1+10);
}

testFunction(1,function(a){
console.log(a);
})
/*等价*/
testFunction(1,result =>{
console.log(result);
})
### ### Callback 机制的定义 Callback 是一种编程模式,指的是将一个函数作为参数传递给另一个函数,并在某个特定事件或条件满足时被调用。这种机制允许开发者定义在某个操作完成后需要执行的逻辑,而无需阻塞当前线程等待操作完成。Callback 通常用于异步编程、事件驱动系统和并发处理中,以实现非阻塞的、响应式的程序行为。 在软件开发中,Callback 机制广泛应用于 GUI 事件处理、网络通信(如异步 RPC 调用)、定时任务、回调监听器等场景。例如,在异步 RPC 调用中,调用方发起请求后并不立即等待结果,而是注册一个回调函数,当服务端返回结果时,该回调函数被自动触发执行。 ### ### Callback 的使用场景 1. **异步编程与非阻塞调用** 在网络通信中,调用远程服务通常需要等待响应,若采用同步方式会阻塞当前线程。使用 Callback 机制可以在请求发出后立即返回,待响应到达时再调用指定的回调函数处理结果。例如在 Dubbo 中,`DefaultFuture` 类通过锁和条件变量实现等待 - 通知机制,而 Callback 则可以在不阻塞线程的前提下处理 RPC 响应[^1]。 2. **事件监听与响应** 在 GUI 编程中,用户操作(如点击按钮)通常通过注册回调函数来响应。例如,Java Swing 中通过 `addActionListener` 注册回调函数,当按钮被点击时自动调用该函数。 3. **定时任务与异步通知** 在定时任务调度中,回调机制可用于定义任务到期时的执行逻辑。例如,JavaScript 中的 `setTimeout` 接收一个回调函数作为参数,在指定时间后执行该函数。 4. **资源加载与异步处理** 在资源加载(如图片、文件、网络数据)时,使用 Callback 可避免主线程阻塞。例如,在前端开发中,使用 `fetch` 获取数据时,通常传入 `.then()` 回调函数处理响应。 ### ### Callback 的实现方式示例 在 Java 中,可以通过接口定义回调函数,示例如下: ```java public interface Callback { void onResult(String result); } public class AsyncService { public void fetchData(Callback callback) { new Thread(() -> { String data = simulateNetworkCall(); callback.onResult(data); }).start(); } private String simulateNetworkCall() { try { Thread.sleep(1000); // 模拟网络延迟 } catch (InterruptedException e) { e.printStackTrace(); } return "Data from server"; } } ``` 在上述代码中,`fetchData` 方法接收一个 `Callback` 接口作为参数,并在后台线程中执行网络请求,待数据返回后调用 `onResult` 方法通知调用方。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值