• AsynclAwait


    一、同步异步的理解

    同步:同步就是在后一个任务等待前一个任务执行完毕后,再执行,执行顺序和任务的排列顺序一致。 同步案例:for循环

    比如: for(var i=0;i<5;i++){ console.log(i) } console.log("hello") 就会先执行完for循环,在执行console.log 复制代码

    异步:异步是非阻塞的,不用等到现在的任务执行完,就可以执行后面的内容。 异步案例:ajax,setTimeout

    console.log(a) setTimeout(()=>{ console.log("我来了") },3000) console.log(b) 执行顺序为a,b,"我来了" 复制代码

    二、async/await是什么

    async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。async 函数返回的是一个 Promise 对象

    典型的异步函数的调用

    $.get('/',function(data){console.log(data.length)}) 还有setTimeout,promise等 复制代码

    Async/Await的语法:

    用来处理异步的,是(Generator函数)的改进,原理也是promise。 asny function fn(){ var res = await fn()//等待fn执行完才会执行后面的代码 console.log("123"),await会阻塞掉后面的代码 } Generator:生成器,可以将异步回调代码变成“同步”代码 复制代码

    三、 async函数总是会返回一个promise,返回一个promise有三种情形:

    1)async函数中显示的return一个promise: 2)如果return的是一个具体值,则会转换为一个resolve为该值的promise; 3)其它则会转换为一个resolve为undefined的promise。 复制代码

    四、 await 的缺点:

    await只能放在async函数里

    await拿到的是resolve的数据或者说传给then的数据,reject(失败)的需要靠try,catch的方法。

    五、为什么要使用await

    为了使我们的异步代码,更像同步的代码

    await是直接获取多个promise的结果的,可以直接await Promise.all()

  • 相关阅读:
    从B树、B+树、B*树谈到R 树
    从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
    Linux Kafka源码环境搭建
    CentOS 关闭图形用户界面
    部署与管理ZooKeeper(转)
    spark 2.0.0集群安装与hive on spark配置
    hive on spark的坑
    Spark2.0.0源码编译
    hive spark版本对应关系
    CentOS7 设置集群时间同步
  • 原文地址:https://www.cnblogs.com/mzj143/p/13160376.html
Copyright © 2020-2023  润新知