方法调用
同步调用:要等待对方执行完毕才返回。A类中的a方法里面用到了B类的b方法,所以要执行完b()之后a方法才结束。如果等待b方法太就的话,就会导致堵塞。(例子:让人买个水,然后就傻等着)
异步调用:是解决同步可能出现的堵塞的情况。它的a方法不会等待b方法的执行,可能a方法直接返回了一个空值,然后A类开始下面的运行,b方法再慢慢执行,这就是异步(实现的时候开一个线程就可以)。(例子:让人买个水,在这里就玩个手机干别的事情了)
回调
但为什么会出来回调呢,因为异步的b方法自己单独执行了,但是如果我想获取b方法的结果给a呢,所以就引出了回调这个说法。(讲真,如果a方法只是需要b的一个结果的话,不需要回调,但是如果a方法需要b返回很多东西就不行了,而回调就可以callback.method1,2,3()…….)
回调也分为同步回调和异步回调,和上面的调用是一样的,异步回调a方法不用等待b方法执行完。
总结一下回调的步骤:a调用b方法,并且把自身作为一个callback传给了b方法,b执行玩个就可以通过传过来的a自身这个callback回传数据。(其实可以不用回调,b自己new一个a,然后在掉用A类里面的方法就可以了,不过终究是不好的,至于为什么我也不怎么清楚)
关于同步异步、堵塞与非堵塞的关系可以参考这篇博文: http://www.cnblogs.com/xybaby/p/6406191.html