JS 计时器和异步编程

197 阅读1分钟

JavaScript 中有两种计时器,一种为 setTimeout 计时器,一种为 setInterval 计时器。

setTimeout 计时器允许设置一个超时对象,超时后执行这个对象,但只执行一次。

setInterval 计时器允许设置一个超时对象,超时后执行这个对象,重复执行,周期为这个对象的指定时间。

1. setTimeout:

第一个参数为要执行的对象, 第二个参数为时间(毫秒 ms )。

setTimeout("alert('this is test')", 2000);


2. setInterval:

第一个参数为要执行的对象,第二个参数为时间(毫秒 ms )。

setInterval(function(){
    var time = new Date().getTime();
    console.log(time);
}, 1000);


function interval(callback, delay){
    let id = setInterval(() => callback(id), delay);
}
interval(function(id){
    console.log(id);
}, 1000)

3. 异步编程:

JS 是单线程的,但对于浏览器来说,JS 的执行只不过是在浏览器众多现成中的一条。即有多条线程同步执行,每个线程可以理解为一个对象。先执行完的线程先渲染。

setTimeout(() => {
    console.log('setTimeout渲染完成.');
}, 2000);
console.log('完成');


// 结果为 先输出完成,在输出 setTimeout渲染完成。