100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > js执行机制的概念?js的执行机制的实现方法

js执行机制的概念?js的执行机制的实现方法

时间:2022-08-10 19:32:14

相关推荐

js执行机制的概念?js的执行机制的实现方法

web前端|js教程

javascript

web前端-js教程

本篇文章给大家带来的内容是关于js执行机制的概念?js的执行机制的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

android砸地鼠系统源码,WN7522 ubuntu,怎么通过爬虫赚钱,php什么不返回任何一个值,seo算法解析lzw

在实际开发中,总是遇到请求结束后,想要把请求得到数据赋值给某一个对象或者变量,如果没有在请求的回调函数中赋值,而是在请求语句下面赋值,我们会发现请求得到数据正常,但是赋值后的变量是undefined。这是为什么呢?

首先,我们要了解一个概念,就是同步与异步。众所周知,js是单线程语言,也就是说,js一次只能执行一个任务,如果有多个任务的话呢,那就按照任务的顺序依次执行。但是如果其中某一个任务耗费大量时间,比如陷入死循环,那么其他任务都不能执行,会造成浏览器无响应。那么js是如何解决的呢?那就是将任务分为同步和异步模式进行执行。同步如上,异步呢是指,拥有大于一个的回调函数,任务在执行结束时不是执行下一个任务而是执行回调函数,那么有人可能会有疑问,这样做与同步有什么区别呢?区别在于,后一个任务不用等前一个任务完全执行后再去执行。因此我们得到的程序执行顺序不是任务的排列顺序。

html活动领取源码,Ubuntu的顶部窗口,爬虫python 资料处理,loadxml php,龙哥seolzw

setTimeout(function(){ console.log(第一个延时调用);});console.log(哈哈哈);new Promise(function(resolve){ console.log(promise任务吗); resolve();}).then(function(){ console.log(回调函数???)});console.log(嘻嘻嘻);setTimeout(function(){ console.log(第二个延时调用);});

执行结果是什么呢?

哈哈哈

promise任务吗

嘻嘻嘻

回调函数???

小猪cms源码安装教程,ubuntu版本查看指令,部署在tomcat上的应用卡,爬虫的学习视频,初级php程序员需要多久,历下seolzw

第一个延时调用

第二个延时调用

为什么是这样呢?为什么setTimeout会在最后才执行,明明是0ms啊。

是因为除了同步异步模式外,我们对任务还有进一步的划分,宏任务和微任务。

宏任务:包括整体代码script,setTimeout,setInterval

微任务:Promise,process.nextTick

在执行时,进入宏任务后,开始第一次循环,接着执行所有微任务,然后在进行宏任务的下次循环。

在上面代码中,进入宏任务,并将setTimeout注册为宏任务放入队列,接着执行哈哈哈,遇到new Promise 直接执行,回调函数放置微任务队列,接着执行嘻嘻嘻,第二个setTimeout如上。接着执行微任务,这里仅有嘻嘻嘻。最后进入下次宏任务。

相关推荐:

js执行机制实例详解

浅析JS执行机制

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。