zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    JPA的查询语言—使用构造器
    Servlet3.0使用注解定义Servlet
    jQuery操作<input type="radio">
    JPA的查询语言—使用原生SQL
    jQuery动态添加<input type="file">
    JPA的查询语言—JPQL的关联查询
    jQuery操作<select>
    Servlet3.0异步处理
    jQuery操作<input type="checkbox">
    mysql binlog二进制日志详解
  • 原文地址:https://www.cnblogs.com/mzj143/p/13160376.html
Copyright © 2011-2022 走看看