nodejs學習筆記之async,await

async應該是目前nodejs裏最簡單直白的異步方案了,async函數實際上就是generator函數的語法糖,省掉了callback的回調地獄,generator的yield next,promise的 .then .catch,使代碼看起來更像是同步流程方案,更扁平化。下面看個例子:

這裏我們要實現一個暫停功能,輸入N毫秒,則停頓N毫秒後才繼續往下執行。

// 這裏是一個功能函數 也可以是其他比較耗時的操作。
var sleep = function (time) { 
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, time);
    })};
var start = async function () {
    // 在這裏使用起來就像同步代碼那樣直觀
    console.log('start');
    await sleep(3000);
    console.log('end');
  };
start();

控制檯先輸出start,稍等3秒後,輸出了end。

async函數使用方式:

    // async 必不可少 是async函數的標誌
    async function myFunc(){
        ... //普通代碼
        await ... // 1 耗時代碼 或執行耗時函數 執行並等待完成之後繼續執行下面的代碼
        let res = await ... // 2 耗時代碼 或執行耗時函數 並得到返回結果
        ...
    }


錯誤捕捉方式:

// async 使用try.catch捕捉錯誤
async function myFunc(){
    try{
        ...
        await ...
    } catch(e) {
        throw e;
    }
}

本文參考http://cnodejs.org/topic/5640b80d3a6aa72c5e0030b6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章