• <legend id='jMNes'><style id='jMNes'><dir id='jMNes'><q id='jMNes'></q></dir></style></legend>
    <i id='jMNes'><tr id='jMNes'><dt id='jMNes'><q id='jMNes'><span id='jMNes'><b id='jMNes'><form id='jMNes'><ins id='jMNes'></ins><ul id='jMNes'></ul><sub id='jMNes'></sub></form><legend id='jMNes'></legend><bdo id='jMNes'><pre id='jMNes'><center id='jMNes'></center></pre></bdo></b><th id='jMNes'></th></span></q></dt></tr></i><div id='jMNes'><tfoot id='jMNes'></tfoot><dl id='jMNes'><fieldset id='jMNes'></fieldset></dl></div>

          <bdo id='jMNes'></bdo><ul id='jMNes'></ul>
        <tfoot id='jMNes'></tfoot>

        <small id='jMNes'></small><noframes id='jMNes'>

      1. 理解JS事件循环

        时间:2023-12-09
      2. <tfoot id='5iAo6'></tfoot>
        <i id='5iAo6'><tr id='5iAo6'><dt id='5iAo6'><q id='5iAo6'><span id='5iAo6'><b id='5iAo6'><form id='5iAo6'><ins id='5iAo6'></ins><ul id='5iAo6'></ul><sub id='5iAo6'></sub></form><legend id='5iAo6'></legend><bdo id='5iAo6'><pre id='5iAo6'><center id='5iAo6'></center></pre></bdo></b><th id='5iAo6'></th></span></q></dt></tr></i><div id='5iAo6'><tfoot id='5iAo6'></tfoot><dl id='5iAo6'><fieldset id='5iAo6'></fieldset></dl></div>
          <bdo id='5iAo6'></bdo><ul id='5iAo6'></ul>
            <tbody id='5iAo6'></tbody>
          • <small id='5iAo6'></small><noframes id='5iAo6'>

            <legend id='5iAo6'><style id='5iAo6'><dir id='5iAo6'><q id='5iAo6'></q></dir></style></legend>

                  理解JS事件循环,需要掌握以下几个知识点:

                  1. JS运行时栈(Call Stack):存储函数调用的栈结构,遵循先进后出的原则。

                  2. Web API: 浏览器提供的API,如setTimeout, setInterval, fetch等,支持异步操作。

                  3. 事件队列(Event Queue):存储Web API中的回调函数。

                  4. Event Loop:事件循环机制,它负责检查Event Queue中是否有回调函数,并将它们添加到JS运行时栈中执行。

                  JS事件循环是一个事件驱动的模型。当JS执行时,它会在运行时栈中按照顺序逐行执行代码,碰到异步操作时就将其交给Web API处理,同时将对应的回调函数压入事件队列。当JS运行时栈为空时,事件循环开始检查事件队列,将里面的回调函数按顺序添加到运行时栈中执行。

                  下面是两个示例说明:

                  示例1:setTimeout(0)

                  console.log('start')
                  setTimeout(() => {
                    console.log('setTimeout')
                  }, 0)
                  console.log('end')
                  

                  在运行示例1时,JS程序将先输出start,紧接着将setTimeout函数压入Web API中,当1ms后,setTimeout函数的回调函数将被压入事件队列中。此时JS运行时栈为空,事件循环开始检查事件队列,并将回调函数添加到运行时栈中,最终输出setTimeout

                  示例2:Promise

                  console.log('start')
                  new Promise(resolve => {
                    console.log('Promise')
                    resolve()
                  }).then(() => {
                    console.log('then')
                  })
                  console.log('end')
                  

                  在运行示例2时,JS程序将先输出start,接着创建Promise对象并执行其中的回调函数,并将其压入Web API中。在回调函数中,输出Promise并调用resolve函数。resolve函数的回调函数将被压入事件队列中。此时JS运行时栈已经执行完毕,事件循环开始检查事件队列,并将resolve函数的回调函数添加到运行时栈中,最终输出then

                  以上就是理解JS事件循环的完整攻略及示例说明。

                  上一篇:Javascript动画插件lottie-web的使用方法 下一篇:js实现缓动动画

                  相关文章

                1. <tfoot id='BeemI'></tfoot>
                  • <bdo id='BeemI'></bdo><ul id='BeemI'></ul>

                    <small id='BeemI'></small><noframes id='BeemI'>

                      <legend id='BeemI'><style id='BeemI'><dir id='BeemI'><q id='BeemI'></q></dir></style></legend>
                    1. <i id='BeemI'><tr id='BeemI'><dt id='BeemI'><q id='BeemI'><span id='BeemI'><b id='BeemI'><form id='BeemI'><ins id='BeemI'></ins><ul id='BeemI'></ul><sub id='BeemI'></sub></form><legend id='BeemI'></legend><bdo id='BeemI'><pre id='BeemI'><center id='BeemI'></center></pre></bdo></b><th id='BeemI'></th></span></q></dt></tr></i><div id='BeemI'><tfoot id='BeemI'></tfoot><dl id='BeemI'><fieldset id='BeemI'></fieldset></dl></div>