ES7新增属性——async函数

2017-11-18  本文已影响70人  Gopal

async函数是什么?
只要函数名之前加上async关键字,就表明该函数内部有异步操作。该异步操作应该返回一个promise对象,前面使用await就会先返回,等到触发的异步操作完成,再接着执行函数体后面是语句

async function getStockPrice(symbol, currency) {
    let price = await getStockPrice(symbol);
    return convert(price, currency);
}

上面代码是一个获取股票报价的函数,函数前面的async关键字,表明该函数将返回一个Promise对象。调用该函数时,当遇到await关键字,立即返回它后面的表达式(getStockPrice函数)产生的Promise对象,不再执行函数体内后面的语句。等到getStockPrice完成,再自动回到函数体内,执行剩下的语句。

async函数有什么用
async函数是用来取代回调函数的另一种方法。

async函数怎么使用
看例子:

function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncValue(value) {
  await timeout(50);
  return value;
}

上面代码中,asyncValue函数前面有async关键字,表明函数体内有异步操作。执行的时候,遇到await语句就会先返回,等到timeout函数执行完毕,再返回value。

async函数并不属于ES6,而是被列入了ES7,但是traceur编译器已经实现了这个功能。

上一篇 下一篇

猜你喜欢

热点阅读