美文网首页
Day47/100 (常考题)Promise和Async awa

Day47/100 (常考题)Promise和Async awa

作者: 赵国星 | 来源:发表于2020-09-17 22:26 被阅读0次

    写在前面的话

    今儿是一道前端面试常考题(亲测)

    (一)题目

    笔试一般会考,console.info打印的顺序,代码类似如下

    async function async1(){

            console.info('async1 start')

            await async2();

            console.info('async1 end')

          }

          async function async2(){

            console.info('async2')

          }

          console.log('script start')

          setTimeout(function(){

            console.info('setTimeOut')

          },0)

          async1();

          new Promise(function(resolve){

            console.info('promise1')

            resolve()

          }).then(function(){

            console.info('promise2')

          })

          console.log('script end')

    面试一般会问Promise的用法,和Async Await的区别;

    再底层些会问宏任务和微任务;

    再底层些会问浏览器事件原理,Evenloop;

    (二)思路

    先说结果,运行结果如下

    以上文中的代码为例,

    1、在本次队列中

    两个异步队列加载到队列中,但并未执行,所以不打印;

    setTimeOut在宏任务中执行(最后执行,所以不打印)

    【关于什么是宏任务可访问 https://mp.csdn.net/console/editor/html/108479599】

    先打印script start;

    然后执行async1()

    有一个是腾讯笔试中考到,也是特别容易出错的一点是,  await直接跟的是先执行,之后的语句才会挂载;

    So 接下来打印async2

    然后是Promise1,

    script end

    2、接下来执行微任务中的队列

    async1 end

    promise2

    3、最后执行宏任务的队列

    setTimeOut

    以上

    参考链接

    https://segmentfault.com/a/1190000016788484

    https://segmentfault.com/a/1190000017224799

    相关文章

      网友评论

          本文标题:Day47/100 (常考题)Promise和Async awa

          本文链接:https://www.haomeiwen.com/subject/anumektx.html