js中,最基础的异步是setTimeout和setInterval函数,
参考网站:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊
单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。于是就有一个概念,任务队列
1.setTimeout和setInterval都属于js中的定时器,可以规定延迟时间再执行某个操作,不同的是setTimeout在规定时间后执行完某个操作就停止了,而setInterval则可以一直循环执行下去。
function fun(){
alert('hello');
}
setTimeout(fun,1000); //参数是函数名,
setTimeout('fun()',1000); //参数是字符串加括号的时候
setInterval(fun,1000);
setInterval('fun()',1000);
在上面代码中,无论是setTimeout还是setInterval,
在使用函数名作为调用句柄时不能带参数,
使用字符串调用时可以带参数,如:setTimeout('fun(name)',1000);
参考网站:https://www.cnblogs.com/lynnmn/p/6222753.html
因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式