我已经完成了......"在超时到期之前:
Promise.resolve(setTimeout(() => {
console.log('print after 3 seconds')
}, 3000))
.then(console.log("done..."))
// Result:
// done...
// print after 3 seconds.
在另一个例子中,它似乎是正确的,那么有什么区别?或者只是巧合?
Promise
.resolve(console.log("print first"))
.then(() => {
console.log("print second")
})
// Result:
// print first
// print second
有什么想法吗?
答案 0 :(得分:0)
Window.setTimeout不返回Promise,它返回A Number,表示设置的计时器的ID值。将此值与clearTimeout()方法一起使用可取消计时器。
请参阅https://www.w3schools.com/jsref/met_win_settimeout.asp
你完成了,因为当setTimeout完成时,3秒还没有过去。
答案 1 :(得分:0)
您对Promise
的使用是错误的,您应该创建一个新的Promise,并在您的逻辑需要时调用resolve函数,在setTimeout
结束时调用。
new Promise((resolve, reject) => {
setTimeout(() => {
console.log('print after 3 seconds');
resolve();
}, 1000);
})
.then(() => console.log("done..."))