关于回调函数

Posted heroinss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于回调函数相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/a_running_wolf/article/details/49359923/

这篇文章

android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。
---------------------
作者:衷水木
来源:CSDN
原文:https://blog.csdn.net/a_running_wolf/article/details/49359923?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

这是作者对回调的理解

总觉得差点意思,大概自己理解不深,所以也说不上来,

下图是我在工作中做的一个类似的,调用方法处是接收了来自客户端的请求,然后像netty通道写消息,又要同步在限定时间内等待client返回,

业务代码需要传入自己的请求,时间限定,以及对按时返回和超时返回的处理,是不是也是一种回调处理呢。

if (null != channel) {
      NettyServerUtils.sendToDev(channel, GsonUtil.object2Gson(centralPlatformReq));
      waitingThreadPool.newWaitingThread(
          centralPlatformReq,
          WaitingThreadPool.WAIT_5_SECONDS,
          new HandleOntime() {
            @Override
            public void handle() {}
          },
          new HandleOvertime() {
            @Override
            public void handle() {}
          });
    }

 

public void newWaitingThread(
      CentralPlatformReq req,
      long waitingTime,
      HandleOntime handleOntime,
      HandleOvertime handleOvertime) {

    String uuid = UUID.randomUUID().toString();
    CountDownLatch latch = newReq(req, uuid);

    // 发送请求完毕,同步等待五秒
    CompletableFuture<Integer> completableFuture =
        CompletableFuture.supplyAsync(
            () -> {
              try {
                if (latch.await(waitingTime, TimeUnit.MILLISECONDS)) {
                  // 5s内返回了
                  handleOntime.handle();
                } else {
                  // 超时
                  handleOvertime.handle();
                }

              } catch (InterruptedException e) {
                e.printStackTrace();
              }

              return 1;
            },
            WaitingThreadPool.executor);
    reqEnd(uuid);
  }

 






以上是关于关于回调函数的主要内容,如果未能解决你的问题,请参考以下文章

Facebook状态回调不适用于片段

关于代码片段的时间复杂度

JavaScript关于函数部分详解以及几种特殊的函数(回调函数递归函数)

关于js中的回调函数callback,通俗易懂

Swoole 关于reload重启与回调函数中代码的重载

满足条件时是不是可以在 GLSL 着色器中回调 C/C++ 函数/代码? [关闭]