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请别处看看!
时间: 2024-10-13 01:04:43

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

理解javascript 回调函数

原文:理解javascript 回调函数 ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如

javascript 回调函数(转)

一,回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函

重新理解javascript回调函数

把函数作为参数传入到另一个函数中.这个函数就是所谓的回调函数 经常遇到这样一种情况,某个项目的A层和B层是由不同的人员协同完成.A层负责功能funA,B层负责funcB.当B层要用到某个模块的数据,于是他对A层人员说,我需要你们提供满足某种需求的数据,你给我提供一个接口. A层的人员说:我给你提供数据,怎么展示和处理则是B的事情. 当然B层不可能为你每个需求都提供一个数据接口,B给A提供一个通过的接口.B得到数据,然后B写函数去展示. 即,你需要和其他人合作,别人提供数据,而你不需要关注别人获取

Python 多进程实战 & 回调函数理解与实战

这篇博文主要讲下笔者在工作中Python多进程的实战运用和回调函数的理解和运用. 多进程实战 实战一.批量文件下载 从一个文件中按行读取 url ,根据 url 下载文件到指定位置,用多进程实现. #!/usr/local/python27/bin/python2.7 from multiprocessing import Process,Pool import os,time,random,sys import urllib # 文件下载函数 def filedown(url,file):  

【JavaScript】JavaScript回调函数

什么是Javascript 回调函数? 函数和其他数据一样可以被赋值,删除,拷贝等,所以也可以把函数作为参数传入到另一个函数中. 这个函数就是所谓的回调函数 举例: //不带参数的case function A(b, c) { return b() + c(); } function B() { return 10; } function C() { return 7; } console.log(A(B, C)); //带参数的case //(将参数重组后,传入d, 作为回调函数的参数,这里给

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

Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch); } 32.判断是否打开视窗 function isViewportOpen() { return !!document.getElementById('wixMobileV

JavaScript回调函数的理解

这里是个人对回调函数的一段理解 <!DOCTYPE html> <html> <head> <title>回调函数</title> </head> <script type="text/javascript"> function testfun(){ alert("hello"); } //i = testfun();//会执行 //i = testfun; // 将首地址给了i /

javascript回调函数(模式)原理和示例深入分析

   广大网友读懂了我之前论述的javascript原理这篇文章很容易懂 回调函数来自一种著名的编程范式--函数式编程,在基本层面上,函数式编程指定的了函数的参数.函数式编程虽然现在的使用范围变小了,但它一直被"专业的聪明的"程序员看作是一种难懂的技术,以前是这样,未来也将是如此. 幸运的是,函数式编程已经被阐述的像你我这样的一般人也能理解和使用.函数式编程最主要的技术之一就是回调函数,你很快会阅读到,实现回调函数就像传递一般的参数变量一样简单.这项技术如此的简单,以至于我都怀疑为什么

javascript 回调函数的返回值给全局变量赋值的问题

jQuery 中,会遇到$.get(url,data,callback,type) 或 $.post(url,data,callback,type) 返回值给全局变量赋值的问题: 例如: <script type="text/javascript" src="jquery-1.4.min.js"></script> <script language="JavaScript"> var mm = 1; $.get