zoukankan      html  css  js  c++  java
  • 理解js异步的概念

    js引擎在执行的时候是单线程的,这是大家都知道的。我们先来看一段代码:

    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>JavaScript</title>
        <script>
        //第一段 for (var i = 10000; i >= 0; i--) { console.log(i); } </script> <script>
         //第二段 var node = document.createElement('script'); node.src="js/async.js"; node.type="text/javascript"; document.head.appendChild(node); </script>
       //第三段 <script src="js/sync.js" type="text/javascript"></script> </head> <body> </body> </html>
    //async.js代码:
    
    console.log('async!');
    //sync.js代码:
    console.log(
    'sync!'); setTimeout(function(){ console.log('setTimout run!'); },1000);

    大家觉得执行顺序是什么?

    输出:10000-0
    
            sync!  
    
            async!
    
           setTimout run!
    

     从执行可以看出,主程序是一直在向下执行。setTimeout和create js都是异步操作,会被放到主线程的执行队列的最后,只有主线程空闲了,才会执行异步队列里的内容。

    那么总结一下,哪些操作是异步操作呢?

    1.ajax

    2.setTimeout/setInternel

    3.websocket

    4.异步加载js

    5.DOM事件、IO输入

    能想到的有这些,有漏掉的再补上!

  • 相关阅读:
    invalid expression: missing ) after argument list in xxx 或者 console.error(("[Vue warn]: " + msg + trace));
    js的alert()
    第9节列表渲染
    第8节条件渲染
    第7节class与style绑定
    CF1215D Ticket Game 博弈论
    CF833A The Meaningless Game 思维
    蚯蚓 队列
    洛谷P2566[SCOI2009]围豆豆
    ants 思维
  • 原文地址:https://www.cnblogs.com/freefish12/p/5535064.html
Copyright © 2011-2022 走看看