Review——JS的异步与同步

一、概念

同步(synchronous):指在js的主线程上,所有任务被依次执行;

异步(asynchronous):指任务不进入主线程,进入任务队列(task);当“任务队列”通知主线程,异步任务才进入主线程执行。

二、异步的机制

  • 同步任务都在主线程上执行,形成一个“任务栈”;
  • 异步任务在“任务队列”中放置一个事件;
  • 主线程的“任务栈”执行完毕后,“任务队列”里的任务被唤醒,从而进入主线程执行;
  • 主线程不断重复上面三步。

任务队列里的事件主要指IO设备或用户行为触发的事件。

三、异步函数

  • setTimeout
  • setInterval
  • Promise

    三个状态:Pending,Fulfilled,Rejected。

    核心方法:resolve/then/reject/catch/all/race

  • async await

四、promise和async/await的区别

Promise

const makeRequest = () =>
  getJSON()
    .then(data => {
      console.log(data)
      return "done"
    })

makeRequest()

Async/Await

const makeRequest = async () => {
  console.log(await getJSON())
  return "done"
}

makeRequest()

综上,Async更简洁。

原文地址:https://www.cnblogs.com/bbcfive/p/10743427.html

时间: 2024-10-10 16:36:07

Review——JS的异步与同步的相关文章

js中异步和同步

js引擎 js引擎是浏览器的重要组成部分,重要用于读取js和执行js代码. js引擎执行js时是单线程执行的. js执行为什么是单线程? 试想一下:如果js是多线程执行的,假设现在有两个线程p1,p1,那么这两个线程可以同时对同一个dom元素进行操作 比喻说,p1对dom元素进行更新操作,p2对dom元素进行删除操作,这样就会引起混乱. 既然是单线程执行,就说明js代码是从上往下一行一行解析执行的,只有上一行代码执行完毕了才会执行下一行代码.如果上一行代码解析时间很长,那么下一行代码就会被阻塞,

js方法异步改同步解决

如下面代码,想要它按照调用执行顺序来输出1,2 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X

非主流node.js异步转同步

异步转同步方案分类 说起nodejs的异步转同步,估计大家不陌生.因为nodejs回调实在太多了,稍微复杂一点的程序就会有很多层的回调嵌套.为了处理这些令人抓狂的回调,我们一般需要使用一些框架或工具将这些异步过程转换成相对比较容易理解的同步过程,也就是我们本文所说的异步转同步.而完成这种转换的工具或库大体上可以分为三类:1. 回调链管理类 2. 编译工具类 3. 底层实现修改类. 第一类是最工具常见的,以Promise.async为代表.这类工具一般需要调用一个方法将我们 的处理函数包裹然后进行

关于Node.js异步转同步

用Node.js做开发我们有时候会很沉浸在它的异步回调机制中.发送一个请求,不管什么时候响应,我们写好一个对应的回调函数(callback),然后我们就可以进行下一步的操作.但是有时候我们又会陷入苦恼之中,比如说我必须在取得回调之后的数据之后才能进行接下来的操作,那么我们就要想办法转异步为同步了. 最常见的异步操作: Async(parameters,function(){ //回调操作 }) 但是如果在回调里面还有另外的回调,那我们就会陷入深深的回调泥潭里.步入正题,Node.js提供原生的P

【译】深入理解python3.4中Asyncio库与Node.js的异步IO机制

转载自http://xidui.github.io/2015/10/29/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3python3-4-Asyncio%E5%BA%93%E4%B8%8ENode-js%E7%9A%84%E5%BC%82%E6%AD%A5IO%E6%9C%BA%E5%88%B6/ 译者:xidui原文: http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html 译者前言 如

对Node.js的异步机制的思考

Node.js的异步机制是其最大的特色,异步可以应对高并发,具有很好的性能. 但是如果在某个方法里,涉及到数据库的多层查询,异步机制反而成为阻碍.当执行完第一层SQL后,根据所得的结果集(rows)进行结果集进行遍历时,每次遍历的结果作为where条件再执行下一层SQL时,下一层及以后的SQL并不会执行,而是在结果集(rows)遍历到最后时,才执行下一层SQL. 这时,若SQL只有两三层,其实倒还好,可以合并SQL:但是SQL层数多了之后,这种异步机制却是最大的阻碍.这时,就需要用到Node.j

Async 异步转同步详细流程解释

安装 npm install async --save 地址 https://github.com/caolan/async Async的内容主要分为三部分 流程控制: 简化九种常见的流程的处理 集合处理:如何使用异步操作处理集中的数据 工具类:几个常用的工具类 本文主要介绍流程控制部分,后续内容持续更新,由于node.js是异步编程模型,有许多在同步编程中很容易做到的事情,现在就会变的很麻烦,并且存在很多的callback.但是,Async的流程控制给我们coder带来了许多便利. 1.ser

js判断异步引入的js文件是否加载完毕

在正常的加载过程中,js的加载都是同步的,也就是在加载过程中,浏览器会阻塞接下来的内容的加载.这时候我们就要用到动态加载,动态加载是异步的,如果我们在后边要用到这个动态加载的js文件里的东西,就要保证这个文件加载完成后,再执行下面的内容. 如何判断js是否加载完成?(实现loadScript(url,callback)异步加载脚本,完成后执行回调函数,要求支持IE) <!DOCTYPE html> <html> <head> <meta charset="

异步复位同步释放

同步复位与异步复位的优缺点 同步复位的优点: 一般能够确保电路是百分之百同步的. 确保复位只发生在有效时钟沿,可以作为过滤掉毛刺的手段. 同步复位的缺点: 复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位.同时还要考虑如:时钟偏移.组合逻辑路径延时.复位延时等因素. 由于大多数的厂商目标库内的触发器都只有异步复位端口,采用同步复位的话,就会耗费较多的逻辑资源. 异步复位优点: 异步复位信号识别方便,而且可以很方便的使用全局复位. 由于大多数的厂商目标库内的触发器都有异步复位端口,