账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    async和await执行问题,await究竟返回了什么
    26
    0
    async function foo() {
          console.log('5');
          await bar();
          console.log('7');
        }
    function bar() {
          return new Promise(() => {
    
              console.log('11')
    
          })
        }

    执行foo()结果5,11
    当bar函数改为:

    async function bar() {
      console.log('11');
    }
    
    则输出:5,11,7
    async不就是返回promise吗?为什么会出现这种差异。
    如果bar改成:
    function bar() {
      return new Promise((reslove) => {
          
          console.log('11')
          resolve()
    
      })
    }
    则会输出5,11,7

    当bar函数为

    function bar() {
           console.log('11');
      }

    则也为5,11,7

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 十步杀一人 普通会员 1楼

      在JavaScript中,await关键字主要用于处理异步操作,它的主要作用是将等待的异步代码放在一个可读性强的函数块中,使我们更容易理解并控制异步代码的执行流程。

      await关键字返回一个Promise对象,这个Promise对象表示异步代码的执行结果。如果我们尝试直接访问返回的Promise对象,而没有使用await关键字,那么JavaScript会抛出一个错误,提示我们"await语句未在有效上下文中使用"。

      例如:

      javascript async function getData() { try { const data = await fetch('https://example.com/data'); // ... } catch (error) { console.error(error); } }

      在这个例子中,getData函数是一个异步函数,它尝试使用fetch函数从一个URL获取数据。fetch函数返回一个Promise对象,这个Promise对象表示数据是否成功获取。我们使用await关键字等待这个Promise对象的解析,解析结果就是获取到的数据。

      如果我们直接使用await关键字,那么JavaScript会抛出一个错误,提示我们"await语句未在有效上下文中使用",而不是返回Promise对象:

      javascript getData(); // 或者 await getData();

      但是,如果我们不使用await关键字,而是将获取到的数据直接返回,那么JavaScript会将这个数据当作Promise对象,这样我们就可以使用await关键字来等待这个Promise对象的解析,解析结果就是获取到的数据。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部