当前位置: 首页 > news >正文

南宁有多少家网站建设推广的公司陕西seo主管

南宁有多少家网站建设推广的公司,陕西seo主管,天涯网站怎么做外链,国外对旅游网站的建设文章目录JS中实现链式调用1. 前言2. 实现思路和code2.1 思路2.2 code3. 总结JS中实现链式调用 1. 前言 很喜欢一句话,程序是一门可以长相厮守的艺术,最近真觉得 JavaScript 真的是万千神奇(所有语言应该都是如此),例…

文章目录

  • JS中实现链式调用
    • 1. 前言
    • 2. 实现思路和code
      • 2.1 思路
      • 2.2 code
    • 3. 总结

JS中实现链式调用

1. 前言

很喜欢一句话,程序是一门可以长相厮守的艺术,最近真觉得 JavaScript 真的是万千神奇(所有语言应该都是如此),例如本文要实现的链式调用。

实现需求如下:

实现一个可像以下code般链式调用的"变量"。其中 sleep指会停留,类似暂停;work直接打印;firstSleep也是暂停,但它相当特殊,首先只能调用一次,其次,无论在链路上何处调用,都必须第一个执行。因此,以下code执行顺序(结果)为:

man.work().sleep(1000).firstSleep(5000).work().sleep(1000);// 执行结果
// 暂停 5 秒 firstSleep(5000)
// 暂停 1 秒 sleep(1000)
// 打印 work()
// 暂停 1 秒 sleep(1000)

2. 实现思路和code

2.1 思路

  1. 链式调用: 如果采用类的思想,那么它的子类就会继承类的所有方法,同时如果每次调用方法后都返回的是这个子类本身,那么就实现了链式调用。
  2. 顺序执行:既然要顺序执行,那么如果在执行函数之前利用队列先收集所有的函数,然后依次执行呢?
  3. firstSleep首先执行:既然能够收集所有的函数,是不是如果把firstSleep直接放到队列头最先执行就可以了呢?

2.2 code

class Man {constructor() {this.queue = [];  // 记录调用的函数,全部是同步收集然后依次执行this.index = 0;   // 执行函数的索引this.firstSleepWatch = false;   // 检查 firstSleep 调用次数,最多调用一次this.init();     }// 因为执行需要在函数收集之前,因此需要利用事件机制,先收集后执行init() {setTimeout(() => this.run() , 0);}run() {const fn = this.queue[this.index++];// 最后一个 fn 为 undefined, 因此需要做处理fn && fn();}firstSleep(delay) {if(this.firstSleepWatch) {throw Error("Already declared firstSleep!!");}this.queue.unshift(() => {setTimeout(() => {console.log('firstSleep end!!');this.run();}, delay);});this.firstSleepWatch = true;return this;}sleep(delay) {this.queue.push(() => {setTimeout(() => {console.log('sleep end!!');this.run();}, delay);});return this;}work() {this.queue.push(() => {console.log('work runing!!');this.run();});return this;}
};const man = new Man();
// 子类在链式调用之前会先收集所有的调用函数,按照顺序放入队列中,收集完成后顺序执行
man.work().sleep(1000).firstSleep(5000).work().sleep(1000);// 执行结果
// 5 秒后打印 firstSleep end!!
// 直接打印  work runing!!
// 1 秒后打印  sleep end!!
// 直接打印  work runing!!
// 1 秒后打印  sleep end!!

3. 总结

非常的有意思的一个需求,这样的代码更多的是让我们考究语言的基础特性,训练思维方式以及巩固语言基础。

希望未来能够遇到更多的这样有意思的需求。

http://www.lbrq.cn/news/2587915.html

相关文章:

  • 企业推广视频优化公司
  • 网站开发公司有哪些t和p在一起怎么做网站
  • 宝安做棋牌网站建设哪家服务好网络推广应该怎么做啊
  • 长沙开福区专业制作网站怎样做一个网页
  • 做好网站建设的重要性cms
  • 企业官网型网站模板下载做灰色词seo靠谱
  • 资深网站企业网站的作用有哪些
  • 合肥置地广场做网站的公司优化服务
  • 个人主页网站制作教程电话号码宣传广告
  • 泰和县城乡建设局网站网站推广服务报价表
  • 手机网站快速建站搜索网站
  • wordpress代码编辑插件seo描述是什么
  • 海外网站如何做用户实名认证对网站和网页的认识
  • 凡科网站内容怎么做效果好自己代理一款手游需要多少钱
  • 个人网站建设设计google搜索引擎下载
  • 做网站联系海口seo快速排名优化
  • 个人网站备案限制八百客crm登录入口
  • html5企业网站开发产品推广
  • wordpress移动端导航百度seo软件曝光行者seo
  • 怎么找做网站平台公司龙岗网站建设公司
  • 江阴做网站哪家好百度关键词排名点击器
  • 庞各庄网站建设公司想做游戏推广怎么找游戏公司
  • 官网网站设计网站ui设计
  • 做全网影视网站的风险app注册推广
  • 四方坪网站建设代写软文公司
  • 单页网站作用是什么新的营销方式有哪些
  • 深圳市建设科技促进中心网站seo网站优化软件
  • 动画设计师是干什么的seo包年优化费用
  • 网站着陆页有多少个今日头条官网登录入口
  • 网站做下子压缩文件的链接网站推广互联网推广
  • Linux 摄像头实时抓取:V4L2、FFmpeg 与 GStreamer 全面讲解
  • SPI通信中CS片选的两种实现方案:硬件片选与软件片选
  • 从0开始学习R语言--Day64--决策树回归
  • 在SQL SERVER 中,用SSMS 实现存储过程的每日自动调用
  • 【Django】-2- 处理HTTP请求
  • 【Python修仙编程】(二) Python3灵源初探(9)