在Javascript中什么是回调函数,我认为简单来说就是把一个函数B作为参数传递给另一个函数A,在A函数中的一定时机调用函数B。

这里可以看出回调函数形成了一个闭包,它可以访问函数A中的活动对象。

请见下面代码:

某村二娃子像买肾机6,但苹果店发现木有库存了,准备去进货,那么这时候二娃子有选择:

一是:

过一会来问一下:”到货没?“,”没有“!

过一会来问一下:”到货没?“,”没有“!

过一会来问一下:”到货没?“,”没有“!

过一会来问一下:”到货没?“,”没有“!

我们称这为轮询方式,这样是比较低效的,二娃子腿都跑断了。

这时候还有一种方式,可以留下电话号码,让水果店到货后再通知二娃子去买,这样二娃子屁颠屁颠滴去干别的活了,坐等通知。

在这里,向水果店询问的 query 方法中,留了手机号码,这个手机号就是一个回调函数。水果店给回调函数传递了到货数量,这就是带返回参数的回调函数。

var seller= {
stock:"iphone6",
stockQty: 0,
query: function (something, quantity, phone13988888888) {
console.log("你要买" + something + "吗?");
if(this.stock==something) {
console.log("是的我们卖" + ",但是让我先我查下库存");
if (this.stockQty < quantity) {
console.log("抱歉我们卖完了,你看库存单---" + something + "的存货数数量是:" + this.stockQty + "---,请留个手机号码,进货后通知你来取!")
sleep(0.01);
this.stockQty = 100;
console.log("我们到货了,到货数量我一会打电话告诉你!");
console.log("马上拨号:")
phone13988888888(this.stock,this.stockQty); }else{
console.log("库存够的,马上发货---"+something+":"+quantity+"---台!");
this.stockQty=this.stockQty-quantity;
return quantity;
}
}else{
console.log("抱歉,我们不卖:"+something+"请别处看看!");
}
}
}; function sleep(delay)
{
var start = new Date().getTime();
while (new Date().getTime() < start + delay){
console.log("进货中...");
};
} function phone13988888888(item,quantity){
console.log("接到电话了,苹果店说他们来了---"+item+":"+quantity+"---台!");
if(quantity>0){
console.log("这次可以买到了,阿哈哈哈!");
var qty=2;
console.log("又跑到水果店,大喊老板,肾机6来:--"+qty+"--台!");
var receiver=seller.query("iphone6",qty);
if(receiver===qty){
console.log("收到"+item+":"+qty+"台,交易完成!")
}
}
} console.log("老板,肾机iphone6来一台!");
seller.query("iphone6",1,phone13988888888); seller.query("iphone7",1,phone13988888888);

再看输出结果:

二娃子:老板,肾机iphone6来一台!

店小二:你要买iphone6吗?
店小二:是的我们卖,但是让我先我查下库存
店小二:抱歉我们卖完了,你看库存单---iphone6的存货数数量是:0---,请留个手机号码,进货后通知你来取!
店小二:进货中...
店小二:进货中...
店小二:进货中...
店小二:进货中...
店小二:进货中...
店小二:我们到货了,到货数量我一会打电话告诉你!
店小二:马上拨号: 二娃子:接到电话了,苹果店说他们来了---iphone6:100---台!
二娃子:这次可以买到了,阿哈哈哈! 二娃子:跑到水果店,大喊老板,肾机6来:--2--台! 店小二:你要买iphone6吗?
店小二:是的我们卖,但是让我先我查下库存
店小二:库存够的,马上发货---iphone6:2---台! 二娃子:收到iphone6:2台,交易完成! 店小二:你要买iphone7吗?
店小二:抱歉,我们不卖:iphone7请别处看看!

Javascript 回调函数理解---二娃子买肾机6的更多相关文章

  1. 理解javascript 回调函数

    ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不 ...

  2. 理解 JavaScript 回调函数并使用

    JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...

  3. JavaScript入门-函数function(二)

    JavaScript入门-函数function(二) 递归函数 什么是递归函数? 递归简单理解就是,在函数体里,调用自己. //我们在求一个10的阶乘的时候,可能会这么做 //写一个循环 var to ...

  4. JavaScript回调函数的实现

    https://github.com/forsigner/blog/blob/master/source/_posts/javascript-callback.md 在JavaScript中,回调函数 ...

  5. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  6. 【JavaScript】JavaScript回调函数

    什么是Javascript 回调函数? 函数和其他数据一样可以被赋值,删除,拷贝等,所以也可以把函数作为参数传入到另一个函数中. 这个函数就是所谓的回调函数   举例: //不带参数的case fun ...

  7. JavaScript回调函数及数组方法测试

    JavaScript回调函数及数组方法测试 具体代码如下: <!DOCTYPE html> <html lang="en"> <head> &l ...

  8. 如何定义 Java 的回调函数,与 JavaScript 回调函数的区别

    JavaScript 中的回调函数 在 JavaScript 中经常使用回调函数,比如:get 请求.post 请求等异步任务.在我们请求之前以及请求之后,都需要完成一些固定的操作,比如:请求之前先从 ...

  9. JavaScript回调函数的理解

    这里是个人对回调函数的一段理解 <!DOCTYPE html> <html> <head> <title>回调函数</title> < ...

随机推荐

  1. 转---写一个网页进度loading

    作者:jack_lo www.jianshu.com/p/4c93f5bd9861 如有好文章投稿,请点击 → 这里了解详情 loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在 ...

  2. JAVA虚拟机体系结构JAVA虚拟机的生命周期

    一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台计算机上同时运行三个Jav ...

  3. vue.js生命周期钩子函数及缓存

    在使用vue.js进行开发时,使用最多的就是created.mounted.activated. 由于有些情况下,我们需要复用某些组件,因此需要用到keep-alive. 当引入keep-alive时 ...

  4. 让机器说话(文字转美女语音,擅长中英文哦),大小600K(免费下载)!

    机器人之路的第二小步:说话(文字转语音美女哦),大小600K(免费下载)! 机器人之路的第二小步:说话(文字转语音美女哦),准确率特别高,普通话标准,中英文都可以说,大家可以体验一下,请下载到电脑上在 ...

  5. ES代码总结2

    本文部分转载于: http://www.cnblogs.com/luxiaoxun/p/4869509.html ElasticSearch的基本用法与集群搭建  一.简介 ElasticSearch ...

  6. sql server 主从库设计和数据库镜像设计

    sql server 主从设计可以通过sql server 的发布订阅实现,在大数据量的时候不要用快照发布,要使用事务发布的方式实现. 主从的设计后,要将数据库的读写分离,实现数据库效率的提示 而数据 ...

  7. sizeof()与Marshal.SizeOf()的不同

    在.NET中一般都是通过sizeof()或Marshal.SizeOf()来获取数据类型的大小,来简要地看一下它们二者有何不同. sizeof() sizeof()在MSDN中的介绍是,在编译时获得一 ...

  8. Docker概念学习系列之Docker的主要目标(2)

    不多说,直接上干货! Docker的主要目标: 见[博主]撰写的https://mp.weixin.qq.com/s/ELYUgMpQOhVvTsNCHQLELg 通过对应用组件的封装.分发.部署.运 ...

  9. ELK初探

    ELK.nginx安装方式:rpm https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html 其他的类似 ngi ...

  10. 软件架构设计学习总结(15):远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比

    总结这些概念都是易混淆,最基本概念定义复习和深入理解,同时也是架构师必备课程   RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请 ...