以下代码输出(1)然后(3)抽动不正确..为什么?
以下代码旨在等待3秒钟,然后打印(3),然后再等待1秒钟,然后打印(1) 因此正确的顺序必须是(3)然后是(1)
我猜问题是wait()返回一个新的Promise,但是我该如何解决此问题 注意:所有函数都必须返回“ this”进行链接
class test extends Promise {
constructor(fn) {
super(fn)
return this
}
wait(seconds) {
return new test(resolve =>
setTimeout(function() {
resolve(seconds)
}, seconds * 1000)
)
}
done(fn) {
return super.then(fn)
}
}
p = new test(r => r())
p.wait(3) //(2) must be before (1)
.done(x => console.log(x))
.wait(1)
.done(x => console.log(x))
答案 0 :(得分:3)
您需要wait
在当前.then
对象(即test
)上调用this
,并返回构造的{{ 1}}链:
Promise