美文网首页
回调函数,异步函数

回调函数,异步函数

作者: 茶树丶ccha | 来源:发表于2018-06-28 17:25 被阅读0次

正题,谈回调函数 (Callback)

解释(引用于百度百科):

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所
指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调
用的,用于对该事件或条件进行响应。

机制(引用于百度百科):

⑴定义一个回调函数;

⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

意义(个人理解):

调用者和被调用者的关系简单化,互相不用关心对方的逻辑处理,不用关系对方都程序是怎么的,只关系返回值,这种基于返回值
的机制很好地使两者的关系简单,明了。

上代码,以下讲述阿 Ben 去饭堂吃饭的故事

接口 Callback

接口定义事情 Done 了之后应该做些什么

public interface Callback {

public void Done(String str);

}

Ben 类

阿 Ben 饿了,于是要去 have lunch,他叫了 Aunt 帮他煮个饭,调用 Aunt 的 cookMeal 方法,于是 Aunt 就去煮了,至于怎么煮,Ben 就不用管了,只要煮好了,就调用 Done,给饭阿 Ben 吃就可以了。

public class Ben implements Callback {

public void havelunch(Aunt aunt){

aunt.cookMeal(``this``);

}

@Override

public void Done(String str) {

System.out.println(str);

}

}

Aunt 类

赋值给 str 就是煮饭的过程,煮好之后,就把结果(饭菜)返回给主函数(Ben)。

public class Aunt {

String str;

public void cookMeal(Callback callback){

str=``" 香喷喷的饭菜来咯 "``; // 这个就是煮饭的过程

callback.Done(str);

}

}

测试类

public class test {

/**

* @param args

*/

public static void main(String[] args) {

Aunt class2=``new Aunt();

Ben class1=``new Ben();

class1.havelunch(class2);

}

}

刚才阿姨在煮饭的时候,阿 Ben 是傻乎乎地站在那里等,等同于是在陪阿姨做饭,这个就是同步回调。

时间怎么可以这么浪费的呢。下面来看看异步回调。

异步回调

这个时候,阿姨还是规规矩矩地做饭。而啊 Ben,得同时做点事情。所以只需要修改 Ben 类。

public class Ben implements Callback {

public void havelunch(``final Aunt aunt){

new Thread(``new Runnable() { //new 一个新的线程去做这个事情,并等待返回结果

@Override

public void run() {

aunt.cookMeal(Ben.``this``);

}

}).start();

play(); // 在阿姨做饭的时候可以玩一会手机先嘛。就不用傻傻地等了,阿姨煮好饭会喊吃的了。

}

public void play(){

System.out.println(``" 玩手机,刷微博,朋友圈,聊扣扣 "``);

}

@Override

public void Done(String str) {

System.out.println(str);

}

}

总结:

回调函数就是那么一回事。

今天在一篇 nodejs 的文章看到了一句话是这么说的:

在代码中,异步编程的直接体现就是回调。异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。

说的不就是这个道理么。呵呵。

以上是我个人的理解,如有错误,望指出。

相关文章

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • 从回调函数到 async await,理清异步编程解决方案

    异步解决方案历程 1. 回调函数 回调函数是最开始的异步解决方案,在异步代码执行完后去执行回调函数 这样做有几个缺...

  • 07_Node.js Event

    一、回调函数 callback 1、回调函数 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现...

  • nodejs--day4笔记

    1. 同步与异步API 回调函数 通过回调函数返回异步API的值 代码执行顺序 2. promise 解决回调...

  • JS异步-解决方法简述

    介绍三种异步处理方案: 回调函数(callback)promiseasync/await 回调函数(callbac...

  • 《全栈工程师修炼指南》学习笔记 15

    异步编程 JavaScript 回调函数容易引起回调地狱 后来有了 Promise,可以将回调函数以 then 的...

  • apply和call语句

    运动框架的应用实例 结合 异步和回调函数 中的 「回调函数2」我们可以试图在回调函数中,用this表示oDiv对象...

  • 2、Node的异步I/O请求对象

    对于一般的(非异步)回调函数,函数由我们自行调用: 而对于Node中的异步I/O调用而言,回调函数却不由开发者来调...

  • 回调函数,异步函数

    正题,谈回调函数 (Callback) 解释(引用于百度百科): 回调函数就是一个通过函数指针调用的函数。如果你把...

  • 04.node内置模块之文件模块fs

    一. 读取文件夹 同步读取文件 异步读取文件夹 异步读取,回调函数后执行 在node中,错误的回调优先,回调函数第...

网友评论

      本文标题:回调函数,异步函数

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