一、实现一个节流函数。
var timer
function hi() {
if(timer) {
clearTimeout(timer)
}
timer = setTimeout(function() {
console.log(1)
},1000)
}
hi()
hi()
hi()
二、简单解释单线程、任务队列的概念。
单线程模型指的是,JavaScript 只在一个线程上运行。也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。
任务队列就是除了正在执行的主线程,还存了一些需要当前处理的异步任务。
当主线程的同步任务全部执行完之后,才会去看在任务队列内的异步任务。若满足条件,异步任务就会进入主线程开始执行,并变成了同步任务。重复上述步骤,到任务队列都清空了,程序就结束执行。
网友评论