Generator和Async简介

本文深入介绍了JavaScript中的迭代器Iterator、生成器Generator以及异步编程的关键概念Async和Await。迭代器提供了遍历集合的统一方式,Generator通过yield关键字实现暂停和恢复执行的功能。异步函数通过Async标记,返回Promise对象,而Await用于等待Promise的解决,确保代码非阻塞执行。这些特性在处理异步操作时非常关键,大大简化了JavaScript中的复杂流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Generator和Async简介

迭代器 Itreator

迭代器Iterator 是 ES6 引⼊的⼀种新的遍历机制,同时也是⼀种特殊对象,它具有⼀些专⻔为 迭代过程设计的专有接⼝。
每个迭代器对象都有⼀个next()⽅法,每次调⽤都返回⼀个当前结果对象。当前结果对象中有 两个属性:

  1. value:当前属性的值
  2. done:用于判断是否遍历结束, 当没有更多可返回的数据时,返回true。 每调⽤⼀次next()⽅法,都会返回下⼀个可⽤的值,直到遍历结束。
    生成器 Generator
    ⽣成器是⼀种返回迭代器的函数,通过function关键字后的星号(*)来表示,函数中会⽤到新的 关键字yield。星号可以紧挨着function关键字,也可以在中间添加⼀个空格.
function* generator(){
 const list=[1,2,3]
 for(let i of list){
 	yield i;
 }
}
let g=generator();
console.log(g.next()); // {value: 1, done: false}
console.log(g.next()); // {value: 2, done: false}
console.log(g.next()); // {value: 3, done: false}
console.log(g.next()); // {value: undefined, done: true}

特性

  1. 每当执行完一条yield语句后函数就会自动停止执行,直到再次调用next()
  2. yield关键字只可在生成器内部使用,在其他地方使用会导致程序抛出错误
  3. 可以通过函数表达式来创建生成器,但是不能使用箭头函数
let generator=function *(){}

Async和Await

Async

作为一个关键字放在函数的前面,表示该函数是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行 异步函数的调用跟普通函数一样
函数返回值是一个Promise对象

Await

await即等待,用于等待一个Promise对象。它只能在异步函数 async function中使用,否则会报错

它的返回值不是Promise对象而是Promise对象处理之后的结果

await表达式会暂停当前 async function的执行,等待Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function,若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。如果 await 操作符后的表达式的值不是一个 Promise,那么该值将被转换为一个已正常处理的 Promise。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alonzo de blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值