js---计时函数

js里面有这样几种相关的方法:

  • setTimeout
  • process.nextTick
  • setImmediate
  • setInterval

nextTick

js里面的Tick可以理解为事件循环执行了一次,nextTick就是将回调放到下一次事件循环中。

setTimeout

setTimeout可以设置多少毫秒后调用回调函数,不过并不精确。可能会因为事件循环运行时间较长导致超时。

setTimeout会返回id,对应取消延时的方法clearTimeout(id)。

setImmediate

和process.nextTick方法类似。


可以看到优先级的对比:

setImmediate(()=>{
	console.log('setImmediate');
});

setTimeout(()=>{
	console.log('setTimeout');}, 0);

process.nextTick(()=>{
	console.log('nextTick');
});

输出结果

nextTick
setTimeout
setImmediate

setInterval

最后的setInterval是每隔一段时间就执行回调函数,相对应的函数是clearInterval。需要先经过一次间隔后才会运行,并不是立即加载。
setInterval不管上一次回调是否完成,都会在相同的间隔内执行下一次回调,真正的间隔取决于设置间隔和回调函数运行的时间。

如果想要避免这种情况,保证上一次结束与下一次开始的间隔相同的话,需要循环调用setTimeout方法。

const myFunction = () => {
  // do something

  setTimeout(myFunction, 1000)
}

setTimeout(myFunction, 1000)

同样可以使用clearInterval(id)来结束。

参考链接:
Timers
setImmediate
nextTick

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值