zoukankan      html  css  js  c++  java
  • javascript面试题

    javascript面试题 - 关于setTimeout异步的案例

    以下代码中 end 字符串什么时候输出?

    var t = true;
    window.setTimeout(function (){
      console.log('123');	// 不执行
      t = false;
    },1000);
    while (t){}
    alert('end');
    

    结果是死循环,永远不弹出'end'

    原因:js是单线程的,while和alert都是同步代码,所以会先执行while再alert,而while循环是一个死循环,所以alert也不会执行。setTimeout是异步代码,因为js的工作机制是当主线程中没有执行任何同步代码的前提下才会执行异步代码,所以setTimeout只能等while完了才会执行,但死循环是永远不会停止的,所以setTimeout也不会执行。

    总结:当线程中没有执行任何同步代码的前提下才会执行异步代码

    完结~
  • 相关阅读:
    Uboot USB模式(RK3288变砖头的解决办法)
    C++ 解析一
    C++基础
    shell脚本分析二
    ASCII
    POJ 1970 The Game (DFS)
    PoJ1979 Red and Black (DFS)
    UVA 572 Oil Deposits (DFS)
    打印日历
    求第N个素数
  • 原文地址:https://www.cnblogs.com/lwlblog/p/12380416.html
Copyright © 2011-2022 走看看