• 12.20 await 操作符的学习(await后跟非promsie、promsie(成功/失败)的几种情况测试)


    • await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function。
    function fn1(x) {
      return new Promise(resolve => {
        setTimeout(() => {
          resolve(x);
        }, 2000);
      });
    }
    
    async function fn2() {
      var x = await fn1(10);
      console.log(x); // 10  x成功获得结果以后再执行console.log(x)语句;
    }
    fn2();
    
    • 若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。(使用try catch处理异常)
        //await只能得到成功的结果,await右边失败的promsie必须使用try、catch
    
        //1.未使用try catch处理失败的promsie
        async function f3() {
          var z = await Promise.reject(30);
          //停止执行
          console.log(z);
        }
        f3();
    
        //2.使用try catch处理失败的promsie
        async function f4() {
          try {
            var z = await Promise.reject(30);
          } catch (z) {
            console.log(z); // 40
          }
        }
        f4();
    
    • 另外,如果 await 操作符后的表达式的值不是一个 Promise,则返回该值本身。
    async function f2() {
      var y = await 20;
      console.log(y); // 20
    }
    f2();
    
  • 相关阅读:
    BZOJ3669
    HDU3726
    BZOJ3282
    BZOJ2843
    Link/cut Tree
    Codeforces396A
    LOJ6277~6285 数列分块入门
    Codeforces446C
    Codeforces475D
    Codeforces103D
  • 原文地址:https://www.cnblogs.com/xjt31/p/14164572.html
Copyright © 2020-2023  润新知