web前端|js教程
JS定时器
web前端-js教程
这篇文章主要介绍了关于JS定时器和单线程异步特性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
g.729 源码,vscode中单词翻译插件,ubuntu20.04,tomcat写文件权限,阿里开源爬虫,php 前30天,湖北新款seo代运营,视频网站分享下级的源码,英文响应式网页模板lzw
首先要说的是,定时器相关的方法都是属于BOM方法,而定时器呢,它是用于在设定的时
间执行一段代码,或者在给定的时间间隔内重复该代码。具体函数:
代挂网php源码,阿里ubuntu安装php,tomcat启动后访问端口,爬虫reboot协议,合并数组元素值php,seo 老板lzw
setTimeout(callback, delay);//delay一定的时间后,执行回调函数只执行一次setInterval(callback, delay);//每隔一段时间执行一次callback,反复执行clearInterval(timer);//清除定时
定时器确实很好用,但是却又不好用,为什么这么说呢?
我们知道JS是单线程的,既然是单线程那么就很容易出现线程被堵塞的情况,怎么解决
呢?——异步!
当然JS是单线程的它本身是不能异步的,但JS的宿主环境(比如浏览器,node)是多线程
的,宿主环境通过某种方式(比如:node的事件驱动)使得JS具备了异步的特性。
为什么突然谈起JS的单线程异步呢?因为定时器事件会被JS异步处理,什么意思?
用代码来说:
仿拍客视频网站源码,单片机用vscode可以开发吗,ubuntu 双击运行,tomcat放视频文件,注册爬虫软件,php引用面向对象教程,广东抖音seo获客系统lzw
var num = 1;setTimeout(function() { num++; console.log(num);}, 1000);console.log(num); //结果并是不(2,1)而是(1,2)
为什么会这样?前面说过了,JS会把定时器事件异步处理,也就是说它并不会等待定时器事件
处理完成后再执行下面的代码,而是直接将定时器事件插入到事件队列当中后,直接执行下面
的代码,当定时器事件执行完成后JS再反过头来执行定时器事件的回调部分代码,这就是异步!
异步可以有效的防止JS线程被堵塞,且会有很高的效率,能够使JS在有限的资源下做更多的事
情,这一点是很了不起的。(node中我们会大量接触关于异步的问题)