回调函数(callback)学习笔记

1.stack overflow 上大神的描述(浏览的网页没记住):

  A "callback" is any function that is called by another function which takes the first function as a parameter.

2.看了几天的介绍,自己关于回调的简单理解:

  1)为了干成某件事,自己建立模块A,然后在A里有一个函数f1负责具体实现某项功能;

  2)来自其他地方的模块B已经具备A需要的部分基本功能,B里有个函数 f2(一般为API);

  3)A要快(tou)速(lan)实现既定功能,就直接套用B。因此调用 B中的f2 ,同时将f1的地址作为参数传递给了f2;

  4)f2在适当时候会调用 f1,这样f1就依托B为基础把事情干成。

  5)f1即为回调函数。

3.引用知乎上的例子

  1)例子1(作者:Mao Bravo;链接:https://www.zhihu.com/question/19801131/answer/91780287;来源:知乎):

function openFile(filePath,callback){
  alert(‘start opening file in‘+filePath);
  callback();//when finished,execute callback()
}

function writeToFile(){
  alert(‘i‘m now writing file‘);
}

openFile(‘c://test.csv‘,writeToFile);

  如果我们在调用openFile 这个例子,我们先会收到 start opening file in c://test.csv ,然后会收到 i‘m now writing file 这不需要你call 它。

在你open file 结束之后就会被自动执行了。

  2)例子2(作者:朱栩 链接:https://www.zhihu.com/question/19801131/answer/17312995 来源:知乎)

  你去食堂打饭,你喜欢吃小炒热饭菜,所以你去了一个小炒窗口。你跟老板说了要×××盖饭,老板说:你是100号,喊到你的号你就来拿菜。然

后你在旁边跟同学吹牛、或者看手机、或者干点你想干的任何事情。。。然后你听到老板喊100号并且把菜放到窗口,你走到窗口,拿到你的菜。
这里面有几个函数:
老板的部分:
  I、老板提供一个点餐的函数 boss.Order(string 菜名,double 钱)
  II、老板有个做饭的函数,此函数耗时较长boss.Cook()
  III、老板提供一个事件,当boss.cook()执行完时,该事件被触发,boss.OnCookFinish;
你的部分:
  I、你需要有一个函数去订餐,也就是你的函数中需要执行类似于boss.Order("红烧肉盖浇饭",20),比如是me.Hungry()
  II、你需要有一个函数作为回调函数去关注boss.OnCookFinish事件,这样当老板做好饭,你就可以知道是不是你的好了。
由于老板的事件发生的时候中会喊编号并且吧菜放到窗口,所以你的回调函数需要能够接受1个编号和1个菜作为参数。比如me.AcceptFood(int currNumber,object food)
所以整个程序的流程其实是这样的。
me.Hungry(){
  boss.Order("红烧肉盖浇饭",20);
  boss.OnCookFinish+=me.AcceptFood;//此处表面,AcceptFood这个回调函数关心OnCookFinish事件,并且变成这个事件的回调函数
  //此时这个函数执行完,不再等待
}
boss.Order("红烧肉盖浇饭",20){
  //收钱
  //配菜 前2个耗时较短
  boss.Cook();//此处一般会开新线程执行cook动作
}
boss.Cook(){
  //cooking~~~~~~~~~~
  //完成了,下面将要触发事件,系统将检查这个事件是否有回调函数关心,有的话逐个回调。
  OnCookFinish(100号,红烧肉盖浇饭);
}
至此案例基本完成了一个完整的任务流程。

 

时间: 2024-10-17 09:58:38

回调函数(callback)学习笔记的相关文章

Javascript中回调函数的学习笔记

function a_b(kkis){ document.body.style.background ='red'; kkis(); } function fli(){ alert('############'); } a_b(fli);

理解javascript中的回调函数(callback)

以下内容来源于:http://www.jb51.net/article/54641.htm 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: app.use(function(req, res, next) {    var err = new Error('Not Found');    err.status = 404;    next(err);}); app是对象,use是方法,方

回调函数callback使用例子

代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title>回调函数(callback)</title> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.9.0/jquery.min.js"></sc

js回调函数(callback)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://luxiao1223.blog.51cto.com/2369118/482885 Mark! js学习 不喜欢js,但是喜欢jquery,不解释. 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函数了.不懂啊,于是在google回调函数,发现网上的中文解释实在是太"深奥"了,我承认自己

Asp.net回调技术Callback学习

.aspx: Html代码   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

理解javascript中的回调函数(callback)【转】

在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后将它返回.这是在JavaScript中使用回调函数的精髓.本篇文

js回调函数(callback)理解

Mark! js学习 不喜欢js,但是喜欢jquery,不解释. 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函数了.不懂啊,于是在google回调函数,发现网上的中文解释实在是太“深奥”了,我承认自己才疏学浅了.看了几个回调的例子后,貌似有点理解了.下面是我对回调函数的理解,要是理解错了,请指正,不甚感激. 首先还是从jquery网站上的英文定义入手,身为国人,我真感到悲剧.一个回调的定义被国内的“高手”解

C++中回调函数(CallBack)的使用

如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现成员函数可以访问C++的数据成员.这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员.由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调函数安装失败.要解决这一问题的关键就是不让t

初探C++函数模版学习笔记

泛型程序设计 特点:算法实现时不指定具体要操作的数据的类型.算法实现一遍但可适用于多种数据结构. 优势:减少重复代码的编写. 实现:大量编写模板, 使用模板的程序设计. 函数模版 为了交换两个int变量的值, 需要编写如下Swap函数: void Swap(int & x, int & y) { int tmp = x; x = y; y = tmp; } 为了交换两个double型变量的值, 还需要编写如下Swap函数: void Swap(double & x, double

C++回调函数(callback)的使用

什么是回调函数(callback)    模块A有一个函数foo,他向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应. 那么我们就把foo称为回调函数.   例子:      回调函数是个很有用,也很重要的概念.当发生某种事件时,系统或其他函数将会自动调用您定义的一段函数.回调函数在windows编程使用的场合很多, 比如Hook回调函数:MouseProc,GetMsgProc连同EnumW