今天突然在想,如果在setInterval里面使用await等待一个比setInterval本身循环等待时间大的任务,那么那个任务按照什么样的时间频次进行执行呢?于是做了一下实验。
一、实验代码
test() {
console.log('time1:' + new Date().getTime() / 1000)
let timer = setInterval(async () => {
await this.hello()
}, 2000) //这里我们称为:duration1
},
async hello() {
return new Promise((resolve) => {
setTimeout(() => {
console.log('time2:' + new Date().getTime() / 1000)
resolve(true)
}, 5000) //这里我们称为:duration2
})
}
二、实验结果
结果三、总结一下
- 经过实验可得出,不管duration1是否大于duration2,初次执行任务time1与time2相差(duration1 + duration2),后面任务再继续执行的时候,彼此之间相差的时间为duration1,与任务本身的duration2无关了。
- 也就是说如果在setInterval里面使用await等待执行一个任务的时候,不管任务本身需要花费多长时间,最终将会以setInterval的时间频次执行。
网友评论