一比较就会发现,async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。
async函数对 Generator 函数的改进,体现在以下四点: 1.内置执行器:async自带执行器,意思就是与普通函数一样,只要一行。 2.更好的语义:async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。 3.更广的适用性:co模块约定,yield命令后面只能是 Thunk 函数或 Promise 对象, 而async函数的await命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)。 4.返回值是 Promise:async函数的返回值是 Promise 对象 进一步说,async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
async function getPriceName(name) {
const symbol = await getSymbol(name);
const price = await getPrice(symbol);
return price;
}
getPriceName('goog').then(function(result){
console.log(result);
})
//async函数与Generator 函数之间有什么样的关系??? 注意:co模块,Thunk 函数或 Promise 对象,还不知道是什么东西????? 语法糖这个东西是如何理解的?????????