最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JS定时器和单线程异步特性

来源:动视网 责编:小采 时间:2020-11-27 19:34:14
文档

JS定时器和单线程异步特性

JS定时器和单线程异步特性:这篇文章主要介绍了关于JS定时器和单线程异步特性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时间执行一段代码,或者在给定的时间间隔内重复该代码。具体
推荐度:
导读JS定时器和单线程异步特性:这篇文章主要介绍了关于JS定时器和单线程异步特性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时间执行一段代码,或者在给定的时间间隔内重复该代码。具体


这篇文章主要介绍了关于JS定时器和单线程异步特性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时
间执行一段代码,或者在给定的时间间隔内重复该代码。具体函数:

setTimeout(callback, delay);//delay一定的时间后,执行回调函数只执行一次
setInterval(callback, delay);//每隔一段时间执行一次callback,反复执行
clearInterval(timer);//清除定时

定时器确实很好用,但是却又不好用,为什么这么说呢?
我们知道JS是单线程的,既然是单线程那么就很容易出现线程被堵塞的情况,怎么解决
呢?——异步!
当然JS是单线程的它本身是不能异步的,但JS的宿主环境(比如浏览器,node)是多线程
的,宿主环境通过某种方式(比如:node的事件驱动)使得JS具备了异步的特性。
为什么突然谈起JS的单线程异步呢?因为定时器事件会被JS异步处理,什么意思?
用代码来说:

var num = 1;
setTimeout(function() {
 num++;
 console.log(num);
}, 1000);
console.log(num); //结果并是不(2,1)而是(1,2)

为什么会这样?前面说过了,JS会把定时器事件异步处理,也就是说它并不会等待定时器事件

处理完成后再执行下面的代码,而是直接将定时器事件插入到事件队列当中后,直接执行下面

的代码,当定时器事件执行完成后JS再反过头来执行定时器事件的回调部分代码,这就是异步!

异步可以有效的防止JS线程被堵塞,且会有很高的效率,能够使JS在有限的资源下做更多的事

情,这一点是很了不起的。(node中我们会大量接触关于异步的问题)

文档

JS定时器和单线程异步特性

JS定时器和单线程异步特性:这篇文章主要介绍了关于JS定时器和单线程异步特性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时间执行一段代码,或者在给定的时间间隔内重复该代码。具体
推荐度:
标签: js 线程 异步
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top