回调

作者: Jorvi | 来源:发表于2020-10-13 11:37 被阅读0次

1. 同步回调

  • Callback
public interface Callback {

    void onSuccess(String result);

    void onFail(String result);
}
  • Server
public class Server {

    private static Map<String, String> map = new HashMap<>();

    static {
        map.put("1", "111");
        map.put("2", "222");
    }

    public void query(String id, Callback callback) throws InterruptedException {
        TimeUnit.SECONDS.sleep(10);
        if (map.containsKey(id)) {
            callback.onSuccess(map.get(id));
        } else {
            callback.onFail("no result for query");
        }
    }
}
  • Client
public class Client {
    public static void main(String[] args) throws InterruptedException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-hh HH:mm:ss");

        Server server = new Server();
        Callback callback = new Callback() {
            @Override
            public void onSuccess(String result) {
                System.out.println(format.format(new Date()) + " Success: " + result);
            }

            @Override
            public void onFail(String result) {
                System.out.println(format.format(new Date()) + " Fail: " + result);
            }
        };

        System.out.println(format.format(new Date()) + " begin query...");
        server.query("1", callback);
        System.out.println(format.format(new Date()) + " finished");
    }
}
  • 运行结果
2020-10-11 11:32:51 begin query...
2020-10-11 11:33:01 Success: 111
2020-10-11 11:33:01 finished

2. 异步回调

  • Callback
    同上

  • Server
    同上

  • Client

public class Client {
    public static void main(String[] args) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-hh HH:mm:ss");

        Server server = new Server();
        Callback callback = new Callback() {
            @Override
            public void onSuccess(String result) {
                System.out.println(format.format(new Date()) + " Success: " + result);
            }

            @Override
            public void onFail(String result) {
                System.out.println(format.format(new Date()) + " Fail: " + result);
            }
        };

        System.out.println(format.format(new Date()) + " begin query...");

        new Thread(() -> {
            try {
                server.query("1", callback);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        System.out.println(format.format(new Date()) + " do something else...");
    }
}
  • 运行结果
2020-10-11 11:36:08 begin query...
2020-10-11 11:36:08 do something else...
2020-10-11 11:36:18 Success: 111

相关文章

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 回调、同步回调、异步回调

    异步消息的传递-回调机制 原文地址:https://www.ibm.com/developerworks/cn/l...

  • 前端入门11 -- JavaScript之Promise

    回调函数 回调函数分为两种类型,分别为同步回调与异步回调; 同步回调:会立即执行,完全执行完了才结束,不会放入回调...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数一个最基本的具名回调匿名回调 回调地狱匿名回调嵌套过多层...

  • [swift]回调block回调

    在OC中习惯应用block进行事件回调,到swift中依然想找到这种简洁的回调事件,下面将介绍如何在swift中使...

  • 回调函数,优化回调

    $.Callbacks(['once']或者['memory']或者['unique']或者['stopOnFal...

  • Dart 语法

    回调 dart定义回调 dart使用回调 延时 异步

网友评论

      本文标题:回调

      本文链接:https://www.haomeiwen.com/subject/pyqvpktx.html