Javascript 回调函数理解---二娃子买肾机6
在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的更多相关文章
- 理解javascript 回调函数
##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不 ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- JavaScript入门-函数function(二)
JavaScript入门-函数function(二) 递归函数 什么是递归函数? 递归简单理解就是,在函数体里,调用自己. //我们在求一个10的阶乘的时候,可能会这么做 //写一个循环 var to ...
- JavaScript回调函数的实现
https://github.com/forsigner/blog/blob/master/source/_posts/javascript-callback.md 在JavaScript中,回调函数 ...
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
- 【JavaScript】JavaScript回调函数
什么是Javascript 回调函数? 函数和其他数据一样可以被赋值,删除,拷贝等,所以也可以把函数作为参数传入到另一个函数中. 这个函数就是所谓的回调函数 举例: //不带参数的case fun ...
- JavaScript回调函数及数组方法测试
JavaScript回调函数及数组方法测试 具体代码如下: <!DOCTYPE html> <html lang="en"> <head> &l ...
- 如何定义 Java 的回调函数,与 JavaScript 回调函数的区别
JavaScript 中的回调函数 在 JavaScript 中经常使用回调函数,比如:get 请求.post 请求等异步任务.在我们请求之前以及请求之后,都需要完成一些固定的操作,比如:请求之前先从 ...
- JavaScript回调函数的理解
这里是个人对回调函数的一段理解 <!DOCTYPE html> <html> <head> <title>回调函数</title> < ...
随机推荐
- maven封装jar包遇到的问题
使用eclipse编译后可以生成jar包,使用mvn clean package指令打包报错,错误如下:No compiler is provided in this environment. Per ...
- POJ 2591
#include<iostream> #include<stdio.h> #define MAXN 10000001 using namespace std; int a[MA ...
- [每天解决一问题系列 - 0004] Excel 公式中拼接字符串
问题描述: 之前很少用excel的formula,今天用户发过来一个文件,里边存储了很多字段对应的编号.想把这些生成我想要的格式,然后导入代码中,当然可以使用第三方的excel操作库来做.最简单直接的 ...
- (转)Python Mixins 机制
原文:https://github.com/dengshuan/notes/blob/master/techs/python-mixins.org https://blog.csdn.net/u012 ...
- Java多线程-Callable的Future返回值的使用
一般使用线程池执行任务都是调用的execute方法,这个方法定义在Executor接口中: public interface Executor { void execute(Runnable comm ...
- 一:理解ASP.NET的运行机制(例:通过HttpModule来计算页面执行时间)
一:简要介绍一下asp.net的执行步骤 1.IIS接收到客户请求 2. IIS把请求交给aspnet_isapi.dll处理 3.(如果是第一次运行程序)装载bin目录中的dll 4.(如果是第一次 ...
- Java设计模式之工厂方法模式(转) 实现是抽象工厂?
Java设计模式之工厂方法模式 责任编辑:覃里作者:Java研究组织 2009-02-25 来源:IT168网站 文本Tag: 设计模式 Java [IT168 技术文章] ...
- logstash-3-输出到es中
之前测试 filebeat和logstash的时候, 使用的是stdout标准输出, 现在我们想把数据输出到es中去, 1, 首先需要一个es: 修改配置文件 后台启动 ./bin/elasticse ...
- kafka主题管理
若代理设置了 auto.create.topics.enable=true,这样还未创建topic就往kafka发送消息时, 会自动创建一个 ${num.partitions}个分区和{default ...
- postgresql的启停和创建
一.启停方法 两种方法 1.直接运行postgres进程启动: 2.使用pg_ctl命令启动 postgres -D /home/osdba/pgdata & 二.停止数据库的三种模式 sm ...