什么是async和await? 怎么捕獲異常?


1.async和await?

async/await主要用於進行異步請求。

1.1被async修飾的函數是異步函數,異步函數就是代碼執行起來不會阻塞后面后面代碼的進程。

1.3async返回一個Promise對象,await等待一個Promise對象,而await等待的就是async返回的Promise對象返回的結果。

async返回一個promise對象

async function test(){
           return "hello word"
        
       }
       console.log(test()) //Promise {<fulfilled>: "hello word"}
        test().then((res)=>{
            console.log(res)//hello word
        }).catch((err)=>{
            console.log(new Error())
        })
       

要是想得async函數的結果,用.then().catch()方法來注冊回調函數

注意:若異步函數內部返回的是一個直接量,則async會把這個直接量用Promise.resolve轉成Promise對象

總結:async函數執行返回一個Promise對象,並把函數內部的值用Promise.resolve進行了封裝

2.await等待

2.1 await放在異步函數內部,await后面跟一個表達式,一般都是Promise對象的表達式

2.2 在async函數執行過程中,遇到await關鍵字時會先暫停,等觸發的異步操作完成后,在執行async函數。

  function test1(){
           console.log("test1")
        };
       async function test(){
           const res=await test1() 
            console.log("test")
       }
      test();//test1  test

3.2await等到是后邊表達式的結果  返回的結果有兩種①Promise對象②不是promise對象

①Promise對象

如果等待的對象是promise,會暫停await后面的執行,先執行async外部的同步代碼,然后再執行內部的代碼,並將得到的結果直接作為await的結果。

②非Promise對象

如果等待的是Promise對象,同樣會暫停await后面的執行限制性async外部的同步代碼,等着 Promise 對象 fulfilled,然后把 resolve 的參數作為 await 表達式的運算結果。

 

3.異常捕獲

try/catch捕獲異常

  async function test(){
           const res=await test1().catch((err)=>{
                console.log(new Error)
               }) 
            console.log("test")
       }

  async function test(){
           try{
           const res=await test1()
           }catch(err){
            console.log(err)
           }
            console.log("test")
       }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM