async 函数的含义和用法

1、async 函数就是 Generator 函数的语法糖,async 函数就是将 Generator 函数的星号(*)替换成 async,将 yield 替换成 await,仅此而已
2、async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里
3、同 Generator 函数一样,async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句。

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

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value)
}

asyncPrint('hello world', 50);

函数前面的async一词意味着一个简单的事情:这个函数总是返回一个promise,如果代码中有return <非promise>语句,JavaScript会自动把返回的这个value值包装成promise的resolved值。

例如,上面的代码返回resolved值为1的promise,我们可以测试一下:

async function f() {
return 1
}
f().then(alert) // 1
我们也可以显式的返回一个promise,这个将会是同样的结果:

async function f() {
return Promise.resolve(1)
}
f().then(alert) // 1
所以,async确保了函数返回一个promise,即使其中包含非promise。够简单了吧?但是不仅仅只是如此,还有另一个关键词await,只能在async函数里使用,同样,它也很cool。

猜你喜欢

转载自blog.csdn.net/weixin_43858880/article/details/90900574