超时调用(setTimeout)和间歇调用(setInterval)

1.超时调用

console.log(1);
var timeouId = setTimeout('console.log(12)', 2000); // 不会阻塞,而是在多长时间后将此任务添加到任务队列,然后任务队列根据添加进来任务的先后顺序进行执行,故此处不一定是2s后执行。第一个参数可以是函数,也可以是字符串,此处尽量不要写字符串
clearTimeout(timeouId); // 可能导致立刻被取消,从而上面的setTimeout的函数不再执行
console.log(2);

超时调用的clearTimeout(取消尚未执行的超时调用计划)一般是不用的
2.间歇调用

var intervalId = null,
    num = 0,
    max = 10;

function intervalHandler() {
    num++;
    if (num === max) {
        clearInterval(intervalId);
        alert("done");
    }
}
intervalId = setInterval(intervalHandler, 500);

而clearInterval(取消间歇调用)一般是必须的,否则,直到页面卸载,程序还在执行。
这个模式也可以使用超时调用来实现:

var num = 0,
    max = 10;
function timeoutHendler() {
    num++;
    if (num < max) {
        setTimeout(timeoutHendler, 500);
    } else {
        alert("done");
    }
}
setTimeout(timeoutHendler, 500);

注意
使用超时调用来模拟间歇调用,是一种最佳模式。因为后一个间歇调用可能会在前一个间歇调用结束之前启动

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值