说说async原理?【专栏16】

前端人

共 1291字,需浏览 3分钟

 · 2021-07-11

提到async就必须要提Generator了,因为async函数是Generator函数的语法糖,将Generator的星号换成async将yield换成await

  1. Generator是一个函数,可以在函数内部通过yield返回一个值(此时,Generator函数的执行会暂定,直到下次触发.next())

  2. 创建一个Generator函数的方法是在function关键字后添加*标识。

  3. 在调用一个Generator函数后,并不会立即执行其中的代码,函数会返回一个Generator对象,通过调用对象的next函数,可以获得yield/return的返回值。

  4. 无论是触发了yield还是return,next()函数总会返回一个带有value和done属性的对象。value为返回值,done则是一个Boolean对象,用来标识Generator是否还能继续提供返回值。

Generator基本使用

const getUserName=()=>{
  return "鬼鬼"
}

const getUserAge=()=>{
  return 18
}

functiongetUserInfo(){
 yield getUserName()
 yield getUserAge()
}

const info = getUserInfo();

console.log(info.next().value); // 鬼鬼
console.log(info.next().value); // 18

async原理

  • 1.相比起Generator,async和await 语义更清晰
  • 2.await必须在async函数里使用,不能单独使用;
  • 3.await后面需要跟Promise对象,不然就没有意义
  • 4.await它会暂停原异步函数的执行,并等待右侧Promise返回结果
  • 5.async 默认返回一个Promise函数
const getUserInfo=async ()=> {
  return "鬼鬼"
}
getUserInfo()

参考资料

  • https://cnblogs.com/jiasm/p/8999111.html
  • https://developer.mozilla.org/

说明

本专栏总共汇总了150道题,每道题目答案没有多余扯皮的部分,就是单纯的答案。

关注公众号,每天一到面试题,为下次跳槽准备,人人都能冲击30k+,点击↓关注【鬼哥

当前进度【#016题】,如果你能点赞分享、鬼哥骑自行车也是开心的

浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报