手机版

你必须知道的Javascript知识点;单线程事件驱动使用

时间:2021-11-21 来源:互联网 编辑:宝哥软件园 浏览:

复制代码如下: var区间body=function(){ console . log(' interval ');} var startInterval=function(){ setInterval(interval body,1000);} var timeoutBody=function(){ console . log(' time out ');} var start time out=function(){ setTimeout(timeoutBody,1000);}var sleep=函数(秒){ var current=new Date()。设置秒(新日期()。getSeconds()(秒);while(新日期)(当前){ } } startInterval();start time out();睡眠(2);console.log('休眠一次');睡眠(2);console.log('再次睡眠');实施结果

发生了什么

规则1事件驱动的单线程模型,所有的javascript代码都在一个线程中执行,javascript线程一次从事件队列中取出一个事件执行。除了javascript线程之外,规则宿主中还有定时器线程(setInterval和setTimeout将触发这两个线程的执行)、浏览器事件触发线程(该线程将触发onclick、onmousemove和其他浏览器事件)和AJAX请求线程。由这些线程触发的所有事件(回调)都被添加到事件队列的尾部。规则3浏览器加载html文档时,会将当前html的所有js代码作为事件队列中的第一个事件,其他线程触发的事件(回调)会添加到事件队列的尾部。

规则settimeout和setInterval中回调的执行时间必须大于为它们指定的秒数。如果javascript执行线程执行A事件,并在执行A事件的过程中修改DOM,这些DOM修改不会立即反映在界面上。相反,当执行A事件时,javascript线程将被阻塞。此时浏览器渲染线程会渲染DOM修改结果,在浏览器渲染线程执行之前,javascript线程不会继续运行。示例复制代码如下: varsleep=function(second){ varcurrent=new date()。setseconds (newdate()。getseconds()(秒);While(新日期)(当前){}} document.body.innerhtml='段光伟';睡眠(5);

版权声明:你必须知道的Javascript知识点;单线程事件驱动使用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。