有关kotlin的回调函数

回调函数

  • 英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed

  • 中文理解:回调函数被用作参数传到另一个主函数里面,当那个主函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调;

  • 代码示例

    //定义主函数,回调函数作为参数
    function A(callback) {
        callback();  
        console.log('我是主函数');      
    }
    
    //定义回调函数
    function B(){
        setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作  
    }
    
    //调用主函数,将函数B传进去
    A(B);
    
    //输出结果
    我是主函数
    我是回调函数
    
  • 定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等

Kotlin中的回调函数

Kotlin回调函数-对于lambda的简化

  • 在Kotlin中对Java中的一些的接口的回调做了一些优化,可以使用一个lambda函数来代替。可以简化写一些不必要的嵌套回调方法。但是需要注意:在lambda表达式,只支持单抽象方法模型,也就是说设计的接口里面只有一个抽象的方法,才符合lambda表达式的规则,多个回调方法不支持
  1. 用Java代码实现一个接口的回调

    mView.setEventListener(new ExamPlanHomeEventListener(){
        public void onSuccess(Data data){
          //todo
        }
    });
    
  2. 在Kotlin中的实现一个接口的回调,不使用lambda表达式(这种方式非常适用于kotlin中对于一个接口中含有多个回调方法)

    mView.setEventListener(object: ExamPlanHomeEventListener{
        public void onSuccess(Data data){
          //todo
        }  
    });
    
  3. 如果在Kotlin中的对于接口只有一个回调的方法,就符合使用lambda函数,我们可以把以上代码简化成这样

    mView.setEventListener({
       data: Data ->
       //todo
    })
    
    //或者可以直接省略Data,借助kotlin的智能类型推导
    mView.setEventListener({
       data ->
       //todo
    })
    
  4. 如果以上代码中的data参数没有使用到的话,可以直接把data去掉

    mView.setEventListener({
      //todo
    })
    
  5. 以上代码还可以做个调整,由于setEventListener函数最后一个参数是一个函数的话,可以直接把括号的实现提到圆括号外面

    
    mView.setEventListener(){
       //todo
    }
    
  6. 由于setEventListener这个函数只有一个参数,可以直接省略圆括号

    mView.setEventListener{
      //todo
    }
    
posted @   小白酒菊  阅读(1347)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示