普通函数与回调函数的区别:
-
对普通函数的调用:
调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用-->等待被调用函数执行完毕-->继续执行” -
对回调函数调用:
调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行。这样,调用程序执和被调用函数同时在执行。当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数,以通知调用程序:函数调用结束。这个过程称为回调(Callback),这正是回调函数名称的由来。我觉得下面一句话更能解释回调的含义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。
上面大致说明白了回调函数的意思,我个人理解就是,A调用B的函数,B函数又通过一定的方法在A中调用自己的方法,这就是回调,下面举个例子来说明下回调函数,使用Java来举例子,在java中,回调机制依赖于接口来实现,
public class A {
private BInterface bInte;
public A() {
}
public void setB( BInterface bInte) {
this.deInte = bInte;
}
public void call() {
bInte.printName();
}
}
B调用的接口:
public interface BInterface {
public void printName();
}
B写的程序:
public class Bimp implements BInterface {
@Override
public void printName() {
System.out.println("This is the client printName method");
}
}
测试如下;
public class Test {
public static void main(String[] args) {
A a = new A();
a.setB(new Bimp());
a.call();
}
}