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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?