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

手写题之链式调用

根据这个类Demo,输出下面内容

// 实现一个 LazyMan 类class LazyMan{constructor(name) {console.log(name);this.name = name}}new LazyMan('Hank').sleep(10).eat('dinner').sleep(10).eat('dinner')// 输出
// Hank
// 等待10s
// dinner
// 等待10s
// dinner

先自己写写吧....

伪代码写下思路

1.定义sleep和eat函数

2.考虑到链式调用,要return this

3.**因为考虑到event loop的概念,等待10秒后执行下面的**

        解决方法:定义内置函数,保存在栈内,点完添加完后一个个执行

完整代码

class LazyMan{constructor(name) {console.log(name);this.name = namethis.tasks = []setTimeout(() => {this.next()}, 0)}next() {if(this.tasks.length > 0) {const task = this.tasks.shift()task()}}sleep(time) {// const fn = (() => {//     setTimeout(() => {//         console.log(`等待了${time}秒`);//         this.next()//     }, time * 1000)// })// this.tasks.push(fn)setTimeout(() => {console.log(`等待了${time}秒`);}, time * 1000)return this}eat(food) {// const fn = (() => {//     console.log(`吃${food}`);//     this.next()// })// this.tasks.push(fn)console.log(`吃${food}`);return this}}new LazyMan('Hank').sleep(10).eat('dinner').sleep(10).eat('dinner')


http://www.mrgr.cn/news/12212.html

相关文章:

  • 全方位解析红鲸音视频会议SDK助力系统功能集成
  • 作业0827
  • 搭建ELK-Filebeat采集系统日志
  • 使用SparkGraphX进行图计算时的编码问题
  • 如何完美实现 Go 服务的平滑升级
  • 8. 为什么 Java 中 HashMap 的默认负载因子是 0.75?
  • Unity 离线文档快速访问处理文件
  • 高效能低延迟:EasyCVR平台WebRTC支持H.265在远程监控中的优势
  • Java-List分批多线程执行
  • ModBus RTU、ModBus ASCII、ModBus TCP,它们有什么区别?
  • 算法训练营|图论第二天 99.岛屿数量 100.岛屿的最大面积
  • 【北森-注册安全分析报告-无验证方式导致安全隐患】
  • 列式存储数据库(Columnar Database)
  • 趣味算法------试用 6 和 9 组成的最大数字
  • streamlit+wordcloud使用pyinstaller打包遇到的一些坑
  • SpringBootWeb入门-HTTP协议、Tomcat下载、基本使用、入门程序解析
  • 每天一个数据分析题(四百九十九)- 数据集
  • EmguCV学习笔记 VB.Net 6.S 特别示例
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • JVM知识点记录