问题描述
设计一个函数,task方法注册执行顺序,run方法执行
应该是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
splice 的返回值是一个数据。你得用
a[0].res