18-async函数
一、含义
1、async函数是什么?
async函数使得异步操作更加方便。用一句话来说,他就是generator函数的语法糖。
2、async函数对generator函数的改进有哪四点?
(1)内置执行器
(2)更好的语义
(3)更广的实用性
(4)返回值是Promise
3、例子:获取股票价格函数
async function getPrice(name){ var symbol = await getStockSymbol(name) var price = await getStockPrice(symbol) return price } getPrice('goog').then((res)=>{ console.log(res) })
这个例子是获取股票报价的函数,函数前面的async关键字表明这个函数内部又异步操作。调用这个函数会返回一个promise对象。
4、例子:指定多少ms之后输出一个值。
function timeout(ms){ return new Promise((resolve,reject)=>{ setTimeout(resolve,ms) }) } async function asyncPrint(value, ms){ await timeout(ms) console.log(value) } asyncPrint("Hello ES6", 500)
由于async函数返回的是promise对象,可以作为await命令的参数。
async function timeout(ms){ await new Promise((resolve, reject)=>{ setTimeout(resolve, ms) }) } async function asyncPrint(value, ms){ await timeout(ms) console.log(value) } asyncPrint('hello', 500)
function timeout(ms){ return new Promise((resolve)=>{ setTimeout(()=>{ resolve("hi") }, ms); //注意这里的第一个参数,是一个箭头函数,如果去掉箭头函数,延迟6秒不会起作用 }) } async function printIt(value, ms){ var it = await timeout(ms) console.log("it-->>", it) } printIt("hi", 6000) //延迟六秒后输出hi