zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    .net面试题目问答题2
    .net面试题目问答题1
    .net面试题目101-130
    .net面试题目51-100
    .net面试题目1-50
    试题
    2014奇虎360研发类校园招聘面试题分享
    JAVA基础
    JAVA中集合的继承关系
    美团
  • 原文地址:https://www.cnblogs.com/xjt31/p/14164572.html
Copyright © 2011-2022 走看看