美文网首页
JS中的异步编程

JS中的异步编程

作者: Leonard被注册了 | 来源:发表于2019-12-03 23:54 被阅读0次

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.等待任务队列中谁先达到条件了(假设寻找时,多数都达到条件了,则先达成条件的优先),就把该任务重新放到主任务队列中执行,执行完毕后再去等待队列中查找,以此类推

相关文章

  • ES6 promise理解

    一、promise 是什么 1、Promise 是 JS 中解决异步编程的一种方案。 拓展:js中解决异步编程的...

  • 深入了解下Promise

    Promise 意义 Promise 的诞生与 Javascript 中异步编程息息相关,js 中异步编程主要指 ...

  • 你真的懂异步编程吗?

    为什么要学习异步编程? 在JS 代码中,异步无处不在,Ajax通信,Node中的文件读写等等等,只有搞清楚异步编程...

  • JS异步编程(3)-Promise

    Promise 是 JS 异步编程中的重要概念,异步抽象处理对象,是目前比较流行的异步编程解决方案之一。主要解决了...

  • 1-1作业参考答案

    模块一:函数式编程与 JS 异步编程、手写 Promise参考答案 简答题 一、谈谈你是如何理解 JS 异步编程的...

  • JS中的异步编程

    前言 编程语言很多的新概念都是为了更好的解决老问题而提出来的。这篇博客就是一步步分析异步编程解决方案的问题以及后续...

  • js中的异步编程

    为什么要异步编程?1、js的单线程2、避免UI渲染和ajax请求造成页面停滞状态3、更好的利用资源 异步编程的主要...

  • js 中的异步编程

    一、js 中异步编程的四种方式 1.回调函数 优点:简单、容易理解和部署 缺点:不利于代码的阅读和维护,各个部分之...

  • js 中的异步编程

    参考自:http://www.ruanyifeng.com/blog/2012/12/asynchronous%E...

  • JS中的异步编程

    JS中的同步编程和异步编程 同步编程:任务是按照顺序依次处理,当前这件事没有彻底做完,下一件事是执行不了的 异步编...

网友评论

      本文标题:JS中的异步编程

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