zoukankan      html  css  js  c++  java
  • promise 和 async / await

    promise 的存在:

      为了解决异步问题,就是当某个异步执行完之后执行某件事,

      什么是异步:

        例:

          console.log(1)

          setTimeout(()=>{

            console.log(2)

          },1000)

          console.lig(3)

          懂异步的知道打印顺序为1,3,2。不知道一定说1,2,3.其实这就是异步

    promise 的三个状态:

      fulfilled:成功。  rejected: 失败。 pending : 进行中

    promise的静态方法与成员方法:

      静态方法:

      

      promise.all():

      例:

        

         都执行完成后执行.then

      promise.race():  使用方法与all相同,都是数组参数,不同的是只要有一个执行完成就执行.then

      

       成员方法:

      

    生成promise :

      let mypromise=new Promise(callbck(fn1,fn2){})

      callbck中,成功执行fn1,失败执行fn2

    使用promise:

      myPromise.then(fn).catch(fn)

    为什么使用promise:

      为了得到异步操作获得结果

    promise是同步的还是异步的?

      可以说它是一个容器,根据容器内部的操作决定,而.then .catch是异步的

    简单举例:

      

      

       可以看出根据一个异步执行的成功与失败执行不同任务

      

    async / await

         是什么:

        是Promise的语法糖,它能实现的效果都能用then链来实现

    async函数:

      async函数的返回值是Promise对象

        返回的值会被当做resolve的值,return的值,出错也会被捕获到

    await (等待):

      1.await关键字后面可以跟任意表达式

      2.await必须写在async函数里面

      3.await不能捕获到promise的报错,所以要用trycatch包住

      4.如果是promise对象,会等promise执行完再执行 下面的代码,换言之,会阻塞后面的同步代码

    例:

      

  • 相关阅读:
    Poj 1742 Coins(多重背包)
    Poj 2350 Above Average(精度控制)
    求二进制数中1的个数
    Poj 1659 Distance on Chessboard(国际象棋的走子规则)
    Poj 2411 Mondriaan's Dream(压缩矩阵DP)
    Poj 2136 Vertical Histogram(打印垂直直方图)
    Poj 1401 Factorial(计算N!尾数0的个数——质因数分解)
    poj 2390 Bank Interest(计算本利和)
    Poj 2533 Longest Ordered Subsequence(LIS)
    Poj 1887 Testing the CATCHER(LIS)
  • 原文地址:https://www.cnblogs.com/hqkbk/p/14156987.html
Copyright © 2011-2022 走看看