|
前言:写这篇文章的目的在于解惑回调函数的疑问!
那么此文将从五个方面来说明回调:
- why: 为什么要回调?
- what: 回调什么?
- who: 谁负责回调?
- when: 何时回调?
- how:怎样回调?
why:为什么要用回调?
避免阻塞!回调函数设计的初衷:如同两个人打电话,我电话委托别人办一件事,不需要在电话这头一直等着对方答复。而是先告知对方你处理完后给我回个电话。这期间我可以爱干啥干啥。
多线程之间:统一接口模版对象线程间传递,各个实现类对象可设定单独的实现方法;
jar包调用:包中的一些方法如果执行时间过长,且执行完成后需要触发应用层的动作。就可以采用回调的方式;
what:回调什么?
按照A(方法)-B(方法)-C(方法)的划分,A执行的过程中调用B:
(1)在B未执行完成之前不具备调用C的条件;
(2)A不愿等待B执行完成(比如:B执行时间过长,通常采用异步调用)
所以A委托告知B(将要执行的对象传递给B)执行完成后触发C(通过传递的对象调用方法)。
who:谁负责回调?
中间调用的B方法,B通常是被异步调用的。
when:何时回调?
通常在B方法执行完成。
how:怎样回调?
......
总结
回调的本质是一种设计思想,而不是一种具体实现。通过ABC的思路,把A想做的事-C委托给B(A不具备触发C的条件),由B在特定的条件下去触发。B专注于处理自身的事情,而不关注事-C的具体情况;
|