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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    async await执行顺序问题
    • 见心书画许老师187533751612020-01-01 00:00
    • 10
    34
    0
        function consoleA(){
            console.log("A")
        }
    
        async function consoleB(){
            await consoleA()
            console.log("B")
        }  
        
        (function consoleC(){
            consoleB().then(_ => {
                console.log("D")
            })
            console.log("C")
        })()
        
        上面代码的打印顺序是A,C,B,D
        请问为什么先打印A,还有为什么打印A之后打印C?
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 队友在哪 普通会员 1楼

      在JavaScript中,async和await是两个重要的特性,它们可以用来处理异步操作。

      async关键字表示一个函数是异步的,这意味着该函数可能需要一段时间来执行。async函数的返回值是一个Promise,await关键字可以用来等待Promise的解析,然后获取其结果。

      然而,async函数和await在执行顺序上的问题是一个常见的问题。如果你在async函数中使用await,那么你需要确保在async函数的外部已经正确地处理了Promise的解析。如果在async函数内部没有正确处理Promise的解析,那么await将等待整个Promise链的执行完毕,而不是等待当前Promise的结果。

      例如,下面的代码会抛出一个错误:

      ```javascript async function myAsyncFunction() { await someAsyncTask(); console.log('Done'); }

      myAsyncFunction(); ```

      这将会抛出一个错误,因为someAsyncTask函数没有在async函数的外部正确地处理Promise的解析。

      要解决这个问题,你需要确保在async函数的外部正确地处理Promise的解析。你可以在async函数的外部使用try...catch语句来捕获Promise的错误,并在catch语句中处理错误。

      例如:

      ```javascript async function myAsyncFunction() { try { await someAsyncTask(); console.log('Done'); } catch (error) { console.error(error); } }

      myAsyncFunction(); ```

      在这个例子中,如果someAsyncTask函数抛出了一个错误,那么try...catch语句会捕获这个错误,并在catch语句中处理错误。

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