async/await

async/await

asyncES7的與異步操做有關的關鍵字,其返回一個Promise對象,await操做符用於等待一個Promise對象,它只能在異步函數async function內部使用。javascript

async

語法

async function name([param[, param[, ... param]]]) { statements }
  • name: 函數名稱。
  • param: 要傳遞給函數的參數的名稱。
  • statements: 函數體語句。

async函數返回一個Promise對象,可使用then方法添加回調函數,返回的Promise對象會運行執行resolve異步函數的返回結果,若是拋出異常則運行拒絕rejectjava

實例

async function asyncPromise(v){
    return v;
}

asyncPromise(1).then((v) => {
    console.log(v);
}).catch((e) => {
    console.log(e);
})

await

async通常是配合await指令使用的,該指令會暫停異步函數的執行,並等待Promise執行,而後繼續執行異步函數,並返回結果。若Promise處理異常rejectedawait表達式會把Promise的異常緣由拋出。另外,若是await操做符後的表達式的值不是一個Promise,則返回該值自己。promise

實例

function promise(){
    return new Promise(function(resolve,reject){
        var rand = Math.random() * 2;
        setTimeout(function(){
            resolve(`solve ${rand}`);
        },1000)
    })
}

(async function asyncPromise(){
    var result = await promise();
    console.log(result);
})();

// 捕捉異常
function promise(){
    return new Promise(function(resolve,reject){
        throw new Error(`reject`);
    })
}

(async function asyncPromise(){
    var result = await promise();
    console.log(result);
})().catch((e) => {
    console.log(e);
});

// 非promise對象直接返回該值自己
function notPromise(){
    return 1;
}

(async function asyncPromise(){
    var result = await notPromise();
    console.log(result);
})();
相關文章
相關標籤/搜索