前几天看到了一道简单的面试题,但是写了半天还是没写出来,其实特别简单,觉得自己好笨
题目是这样的,实现一个对象foo,它有两个方法,print(str)用来打印字符串,sleep(time)用来延迟时间,最终支持这样的调用:foo.print(1).sleep(1000).print(2).sleep(2000).print(3) 执行的结果是先打印1,然后过一秒钟打印2,然后过两秒钟打印3
看起来挺简单的,其实实现也很简单
class Foo {
this.task = Promise.resolve()
print(str) {
this.task = this.task.then(() => {
console.log(str)
})
return this
}
sleep(time) {
this.task = this.task.then(() => {
return new Promise(r => setTimeout(r, time))
})
return this
}
}
明明就是promise,就是半天写不出来,我太笨了。。。😔