async基本使用


async函數在使用上很簡單,我們來看一下下面的例子

async function add(a,b){

  return a+b

}

add(1,2).then((res) =>{

  consoel.log(res); //3

})

在上面的例子中我們可以看到。async返回的是一個 prominse對象。可以想prominse一樣使用。then的方法

還有一個特性,在async里有await 這個關鍵字。他是專屬async的方法如果在函數外就會報錯

在函數運行中遇到await會先把異步回調執行完成再去執行下面的內容。看下面這個例子

function wa(){
    return new Promise((resolve, reject) => {
        console.log('你');
        setTimeout(function(){
            resolve('回來了');
        })
    });
}
async function aw(){
    await wa().then(res => console.log(res))
    console.log('歡迎回家');
}

aw().then(res=>{
    console.log('咳咳');
})

它運行出來的結果就是

回來了

歡迎回家

咳咳

 這樣我們就可以很好的控制異步回調的內容。看下面的例子

function fun1(){
    return new Promise((resolve,reject) =>{
        setTimeout(function(){
            resolve('1');
        },3000)
    })
}

function fun2(){
    return new Promise((resolve,reject) => {
        setTimeout(function(){
            resolve('2');
        },2000)
    })
}

async function all(){
    await fun1().then((res) =>{console.log(res)});
    await fun2().then((res) =>{console.log(res)});
    return '執行完成了'
}

all().then((res) =>{
    console.log(res);
})
//1
//2
//執行完成了

上面的代碼我們想讓在fun1執行完成以后再去執行fun2就可以使用這樣的方法,這樣要比嵌套的寫法好進行維護。

這也是解決回調地獄的方法之一。

 


免責聲明!

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



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