设计一个函数,隔n秒输出x

问题描述

设计一个函数,task方法注册执行顺序,run方法执行
image.png
应该是3秒输出1,再隔2秒输出2,再隔1秒输出3

问题出现的环境背景及自己尝试过哪些方法

面试的时候遇到的

相关代码

function List () {
  this.innerArray = []
  this.run = () => {
    if (this.innerArray.length) {
      let a = this.innerArray.splice(0, 1)
      console.log(a, this.innerArray)
      setTimeout(() => {
        console.log(a.res)
        this.run()
      }, a.time)
    }
  }
  this.task = (res, time) => {
    this.innerArray.push({
      res, time
    })
  }
}
let list = new List()
list.task(1, 3000)
list.task(2, 2000)
list.task(3, 1000)
list.run()

你期待的结果是什么?实际看到的错误信息又是什么?

为什么输出都是undefined

阅读 2.2k
2 个回答

splice 的返回值是一个数据。你得用 a[0].res

splice如楼上说的,返回的是数组。可以用shift返回第一个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题