• 理解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输入

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

  • 相关阅读:
    CF 120F Spider 树的直径 简单题
    POJ 1155 TELE 背包型树形DP 经典题
    CF 219D Choosing Capital for Treeland 树形DP 好题
    POJ 3162 Walking Race 树形DP+线段树
    HDU 2196 Computer 树形DP 经典题
    __str__()、__repr__()和__format__()
    item系列方法
    getattribute
    isinstance和issubclass
    继承方式完成包装
  • 原文地址:https://www.cnblogs.com/freefish12/p/5535064.html
Copyright © 2020-2023  润新知