美文网首页
前端JS基础四(异步 单线程)

前端JS基础四(异步 单线程)

作者: EmilioWeng | 来源:发表于2018-08-01 16:29 被阅读0次

异步

何时需要异步
  • 在可能发生等待的情况下
  • 等待过程中不能像alert一样阻塞程序运行
  • 因此,所以的“等待的情况”都需要异步
前端使用异步的场景
  • 定时任务:setTimeout,setInterval
  • 网络请求:ajax请求,动态加载
  • 事件绑定
    console.log(100) 
    setTimeout(function(){ 
        console.log(200) 
    },1000) 
    console.log(300) //100 300 200

异步示例

    console.log('start');
    $.get('./data1.json',function(data1){
        console.log(data1);
    })
    console.log('end')//'start'  'end'   data1

    console.log(start);
    var img=document.createElement('img')
    img.onload=function(){
        console.log('loaded')
    }//图片加载完执行
    img.src='/xx.png';
    console.log('end');//start end loaded

    console.log('start')
    document.getElementById('btn1').addEventListener('click',function(){
       alert('clicked');
    })//点击时才会执行
    console.log('end');//start clicked end

同步

    console.log(100)
    alert(200);
    console.log(300)  //100 200 300

异步和单线程

    console.log(100) 
    setTimeout(function(){ 
        console.log(200) 
    }) 
    console.log(300) //100 300 200 

上述异步代码的执行过程如下
1、执行第一行打印100
2、setTimeout 异步执行,先暂存起来
3、打印 300
4、待所有程序执行完,处于空闲状态时,拿到暂存的函数在指定的时间后执行

练习题

练习题1、同步和异步的区别是什么?分别举一个同步和异步的例子 
    同步会阻塞代码执行,而异步不会 
    alert是同步,setTimeout是异步

练习题2、一个关于setTimeout的笔试题 
    console.log(1) 
    setTimeout(function(){ 
         console.log(2) 
    },0) 
    console.log(3) 
    setTimeout(function(){ 
       console.log(4) 
    },1000) 
    console.log(5)   
    //1 3 5 2 4

练习题3、前端使用异步的场景有哪些 
    定时任务:setTimeout,setInterval 
    网络请求:ajax请求,动态加载 
    事件绑定

相关文章

  • 前端JS基础四(异步 单线程)

    异步 何时需要异步 在可能发生等待的情况下 等待过程中不能像alert一样阻塞程序运行 因此,所以的“等待的情况”...

  • javascript面试准备(一)

    interview js 基础 原型 原型链 作用域 闭包 异步 单线程 js Api dom 操作 ajax 事...

  • JS执行机制

    首先我们来看几个问题: 1.JS是单线程的么?2.JS有异步么?3.JS单线程怎么实现的的异步 1.JS是单线程的...

  • javascript单线程,异步与执行机制

    js的单线程模型与游览器的进程/线程息息相关,在了解js单线程与异步的时候,建议先看看这篇文章 单线程/异步 js...

  • js的单线程和异步

    js的单线程和异步 js是一直是单线程的,浏览器才是实现异步的那个家伙

  • JS相关问题记录汇总

    JS异步 JS为单线程 ,而异步的概念则为JS独有 , 某些用户角度来讲不需要等待的事情单线程就会导致任务排队 ,...

  • web前端面试题@十七(js的单线程和多线程)

    js单线程重点: JS 是单线程的,但是却能执行异步任务, 这主要是因为 JS 中存在事件循环(Event L...

  • js 异步全览

    问题! JS 为什么是单线程的? 为什么需要异步? 单线程又是如何实现异步的呢? promise 的优点是什么? ...

  • Promise入门详解和基本用法

    异步调用 异步 JavaScript的执行环境是单线程。 所谓单线程,是指JS引擎中负责解释和执行JavaScri...

  • JavaScript的单线程和异步

    来源:js的单线程和异步 作者:wudipmd 前言 说到JavaScript的单线程(single thread...

网友评论

      本文标题:前端JS基础四(异步 单线程)

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