首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js执行栈与事件循环简单理解

事件循环 所以,事件循环其实就是js代码借助与浏览器API向消息队列丢入一些回调函数,等待执行栈放空自己的时候,把消息队列的回调函数压入到执行执行的这么一个机制。...因为此时执行mian函数还没有执行玩,所以,消息队列里面的消息只能望穿秋水的等待着.......紧接着runWhileLoopForNSeconds(3);被压入了执行,是一个函数,由于js是单线程的,因此mian也好,runWhileLoopForNSeconds也好,都会在这个执行栈所在在执行上线文中孤独的执行着...('C');被压入了执行栈,然后秒执行了,此时main总算走空了,因此事件循环现在就看消息队列中有没有消息了,已看发现有,嘿,一个一个的丢出来,放到执行执行。...总结 所以,只有当执行是空的时候,事件循环机制才有机会把消息队列的任务丢出来执行,换句话说,只有执行栈中有内容在执行,事件循环就不可能给你从消息队列取任务出来执行

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS的那些循环

    一、forEach定义一个函数, 数组的普通循环遍历, 并为每个数组元素执行一次传入的callback/** * @param {*} element 当前处理元素 * @param {number}...index 当前处理元素索引 * @param {*} array forEach操作的数组 * @param {*} thisArg 执行回调函数时绑定的this, 对箭头函数无效 * @returns...array-[1,2,3,4]// index 2: v-4, array-[2,3,4]// a: [2,3,4] 3、 改变元素值: 虽然callback的对长度的修改不影响遍历范围, 但如果在执行过程...js除了上述三种循环之外, 还有一下循环方式 1、 for语句 2、 do...while语句 3、 while语句 4、 map函数 5、 some函数 6、 every函数以上不做详细介绍...执行函数时会存储函数执行堆栈, 执行效率比普通for略低5、for...of: 471.445ms, 通过访问对象的迭代器进行循环6、map: 549.118ms, 会对数组进行浅拷贝, 并返回新数组

    2K10

    python循环执行

    python循环的流程图如下: 本文目录 1 while循环 2 无限循环 3 break与continue 4 for循环 5 range() 6 嵌套循环 while循环 pythonwhile循环的一般形式是...%d, i = %d' % (sum, i)) 这个例子,首先判断布尔表达式i <= 10的值,第一次循环中i的值为1,布尔表达式为真,因此进入while语句块。...在执行完while的语句块之后(i此时的值为2),再次判断布尔表达式,布尔表达式为真,因此进入while语句块。...虽然这个例子没什么意思,但是在一些场合死循环得到重要应用,比如嵌入式设备,一些程序要在上电后开始执行,一直到断电。 break与continue break语句跳出循环。...退出程序. continue语句并不会跳出循环,而是会结束本次循环,进入下一次循环。如果continue语句得到了执行,则循环语句块continue语句之后的内容不会得到执行

    1.7K30

    js的四种for循环

    总结一下JavaScript 的 for 循环 写在前面 最近刷题时遇到了几种不同for循环,因为没有深入了解导致做题时无法区分它们的用法,尤其是在以及在使用时的注意点。...因此本文主要对js的四种for循环进行总结区分。 文章最后通过一个面试题加深对不同for循环的认识和使用。...在ECMAScript5(简称 ES5),有三种 for 循环,分别是:· for 、 for-in 、 forEach 在2015年6月份发布的ECMAScript6(简称 ES6),新增了一种循环...所以,鉴于以上种种缺陷,我们需要改进原先的 for 循环。但 ES6 不会破坏你已经写好的 JS 代码。目前,成千上万的 Web 网站依赖 for-in 循环,其中一些网站甚至将其用于数组遍历。...其思想主要是类似koa里面的compose思想和next思想即koa1的中间件执行思想。

    1.9K00

    dotNet 5 执行 Node.js

    本文简单介绍下在 dotNET 5 怎么样进行 Node.js 的调用以及怎样部署到 CentOS 和 Docker 容器。...环境 dotNET :5 Node.js:14.17.4 CentOS:7.6 Docker:19.03.13 dotNET 5 的代码实现 1、在 VS 创建 WebAPI 示例项目 nodejs-demo...3、修改 Startup 类,在 ConfigureServices 方法添加下面代码: services.AddNodeServices(); 4、在项目的根目录创建一个名为 hello.js...Node.js 环境; 4、容器安装 Node.js 的方式和在 CentOS 相同,执行命令 docker cp nodejs 容器id:/usr/local 将 Node.js 的包复制到容器的.../usr/local 目录; 5、执行 docker exec -it 容器id bash 进入到容器; 6、执行下面的命令进行软链接: ln -s /usr/local/nodejs/bin/npm

    1.6K30

    js事件循环

    从上图我们可以看出,js主线程它是有一个执行栈的,所有的js代码都会在执行栈里运行。...而当主线程执行完栈的所有代码后,它就会检查任务队列是否有任务要执行,如果有任务要执行的话,那么就将该任务放到执行执行。如果当前任务队列为空的话,它就会一直循环等待任务到来。...因此,这叫做事件循环。 那么,问题来了。如果任务队列,有很多个任务的话,那么要先执行哪一个任务呢?...其实事件循环做的事情如下: 检查Macrotask 队列是否为空,若不为空,则进行下一步,若为空,则跳到3 从Macrotask队列取队首(在队列时间最长)的任务进去执行执行(仅仅一个),执行完后进入下一步...原因:因为一开始js主线程跑的任务就是macrotask任务,而根据事件循环的流程,一次事件循环只会执行一个macrotask任务,因此,执行完主线程的代码后,它就去从microtask队列里取队首任务来执行

    18.8K41

    JS 循环链表

    循环链表的概念循环链表是一种链表的变体,其中链表的最后一个节点指向链表的头节点,形成一个循环或环状结构。与普通链表不同,循环链表没有明确的结束点。...但是,在链接节点时需要特别注意将最后一个节点的指针指向第一个节点,以形成循环的闭合。循环链表的应用场景包括游戏开发循环列表、轮播图展示、约瑟夫环问题等。...场景应用:循环链表常用于需要循环遍历的场景。例如,在游戏开发,可以使用循环链表来实现循环列表,遍历玩家角色队列;在轮播图或循环播放的场景,可以使用循环链表来管理展示内容的顺序。...实现一个循环列表在 JavaScript 循环链表是一种特殊的链表结构,其中最后一个节点指向头节点,形成一个循环。这种数据结构可以用于处理需要连续循环遍历的场景。...在 append 方法,我们将新节点添加到链表的末尾,并确保最后一个节点指向头节点以形成循环链接。在 traverse 方法,我们从头节点开始遍历链表,直到回到头节点为止。

    14910
    领券