异步专题

总结

  1. 同步和异步
  2. Promise 写法
  3. promise状态
  4. then的返还值
  5. Async 和 await 写法

同步异步概念

  • 同步和异步

    • 同步和异步是一种消息通知机制

    • 同步阻塞: A调用B,B处理获得结果,才返回给A。A在这个过程中,一直等待B的处理结果,没有拿到结果之前,需要A(调用者)一直等待和确认调用结果是否返回,拿到结果,然后继续往下执行。

    ​ 做一件事,没有拿到结果之前,就一直在这等着,一直等到有结果了,再去做下边的事

    • 异步非阻塞: A调用B,无需等待B的结果,B通过状态,通知等来通知A或回调函数来处理。

    ​ 做一件事,不用等待事情的结果,然后就去忙别的了,有了结果,再通过状态来告诉我,或者通过回调函数来处理。

回调

  • 回调地狱:函数作为参数,层层嵌套-代码不利于维护
  • promise来改造回调 - 链式操作

自定义事件

let elem = new EventTarget();
elem.addEventListener('event',fn,false);
elem.dispatchEvent(new CustomEvent("event"))

promise使用

  • ES6的Promise对象是一个构造函数,用来生成Promise实例。
    所谓Promise对象,就是代表了未来某个将要发生的事件(通常是一个异步操作)。
    将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
    • 3种状态 : pending 、resolved 和 rejected
    • 链式调用then的2个参数;onresolved 和 onrejected;
    • 链式调用then的3种返回值
      会返回一个新的 Promise 对象, 但是状态会有几种情况:
      • 没有返回值- promise 对象,状态延续上个promise对象状态
      • 返回值是 普通值, resolved 的 promise 对象
      • 返回值是 promise 对象-直接返回这个promise 对象,状态延续上个promise对象状态
    • 5种静态方法:resolve、reject、all、race、finally
      all都resolved才执行 -手写
      race执行最快的 -手写

async及await优雅使用-用同步思维解决异步操作-async与await搭配使用

  • async function fn(){
    try{
    let r1 = await p1();
    let r2 = await p2();
    }.catch(err){
    console.log(err)
    }
    }
posted @ 2021-11-09 10:06  忘川酒  阅读(32)  评论(0)    收藏  举报