JS中的异步编程

JS中的同步编程和异步编程

  • 同步编程:任务是按照顺序依次处理,当前这件事没有彻底做完,下一件事是执行不了的
  • 异步编程:当前这件事没有彻底做完,需要等待一段时间才能继续处理,此时我们不等,继续执行下面的任务,当后面的任务完成后,再去把没有彻底完成的事情完成
  • JS中常见的异步编程方式
    1.所有的事件绑定都是异步编程 xxx.onclick=function(){}
    2.所有的定时器都是异步编程 setTimeout(function(){},1000)
    3.AJAX中一般都使用异步编程处理
    4.回调函数也算是异步编程
    5.Promise(async/await)
    6.process.nextTick
    7.Node中fs可以进行异步的I/O操作

定时器:设定一个定时器,并且设定了等到的时间,当到达执定的时间,浏览器会把对应的方法执行

  • 常用的定时器

    • setTimeout([function],[interval])
    • setInterval([function],[interval])
    • [function]:到达时间后执行的方法(设置定时器的时候方法没有执行,到时间浏览器帮我们执行),[interval]:时间因子(需要等到的时间 MS)
    • setTimeout是执行一次的定时器,setInterval是可执行多次的定时器
  • 清除定时器

    • clearTimeout / clearInterval:这两个方法中的任何一个都可以清除用任何方法创建的定时器
      1.设置定时器会有一个返回值,这个值是一个数字,属于定时器的编号,代表当前是第几个定时器(不管是基于setTimeout还是setInterval创建定时器,这个编号会累加)
      2.clearTimeout([序号])/clearInterval([序号]):根据序号清除浏览器中设定的定时器
let count = 0;
let timer = setInterval(() => {
    count++;
    console.log(count);    // 1 2 3 4 5
    if (count === 5) {
        //=>清除定时器
        clearTimeout(timer);
    }
}, 1000);
console.log(timer);    // 1

回调函数:把一个函数A当做实参专递给另外一个函数B,在B方法执行的时候,把A执行了,这种机制叫做 “回调函数机制”

1.根据需求回调函数可以被执行N多次
2.不仅可以把回调函数执行,还可以给传递的回调函数传递实参,这样在回调函数中设置形参(或者使用ARG)接收即可
3.还可以改变回调函数中的THIS指向
4.可以在宿主函数(它在哪执行的,它的宿主函数就是谁)中接收回调函数执行的返回结果


浏览器是如何规划同步异步机制的

1.浏览器是多线程的,JS是单线程的(浏览器只给JS执行分配一个线程):单线程的特点就是一次只能处理一件事情
2.JS在单线程中实现异步的机制,主要依赖于浏览器的任务队列完成的。浏览器中有两个任务队列(主任务队列、等待任务队列
3.在主任务队列自上而下执行的过程中,如果遇到一个异步操作任务,不会立即执行,而是将其放至等待任务队列中进行等待
4.当主任务队列中的任务完成之后,才会到等待任务队列中进行查找任务
5.等待任务队列中谁先达到条件了(假设寻找时,多数都达到条件了,则先达成条件的优先),就把该任务重新放到主任务队列中执行,执行完毕后再去等待队列中查找,以此类推

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 编程语言很多的新概念都是为了更好的解决老问题而提出来的。这篇博客就是一步步分析异步编程解决方案的问题以及后续...
    李向_c52d阅读 1,074评论 0 2
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 2,749评论 0 5
  • 一、单线程 主线程:JavaScript是单线程的,所谓单线程,是指在JS引擎中负责解释和执行JavaScript...
    puxiaotaoc阅读 21,100评论 7 32
  • 为什么要异步编程?1、js的单线程2、避免UI渲染和ajax请求造成页面停滞状态3、更好的利用资源 异步编程的主要...
    水一川阅读 221评论 0 1
  • 一、js 中异步编程的四种方式 1.回调函数 优点:简单、容易理解和部署 缺点:不利于代码的阅读和维护,各个部分之...
    落叶无声xcm阅读 144评论 0 1