📜  生成器函数 javascript (1)

📅  最后修改于: 2023-12-03 15:11:13.673000             🧑  作者: Mango

生成器函数 JavaScript

生成器函数是一种特殊类型的函数,它可以暂停代码执行,并在稍后恢复。生成器函数使用关键字 function* 声明,并使用关键字 yield 暂停执行和返回值。它的一个优点是可以在需要时逐步生成值,而不是一次性生成所有值。

基本语法
function* name() {
  yield value;
  ...
}
  • function* 是生成器函数的声明方式
  • name() 是函数名
  • yield 关键字用来暂停和恢复函数执行,可以返回对应的值。
生成器函数的调用

创建生成器函数后,需要通过调用它来执行它的代码。

const gen = name();
gen.next();
  • 首先,我们需要创建生成器对象,通过调用生成器函数。name() 会返回一个生成器对象。
  • gen.next() 是生成器对象的方法,调用它可以让生成器继续执行直到第一个 yield 关键字的位置。它返回一个对象,其中包含 valuedone 属性。
生成器函数的迭代器

生成器对象是一个迭代器,它具有以下方法:

  • next(): 返回由 yield 关键字产生的值和表示是否完成迭代器的 done 属性的对象。
  • return(value): 结束迭代器的执行并返回一个给定的值。
  • throw(exception): 抛出一个异常,并在生成器函数内部捕获它。
生成器函数的应用

生成器函数的一个主要应用场景是异步编程。当我们需要按顺序执行一些异步操作时,可以利用 yield 关键字来暂停执行并等待异步操作的结果,然后再恢复执行。

function* getNames() {
  const name1 = yield fetch('https://api.example.com/names/1');
  const name2 = yield fetch('https://api.example.com/names/2');
  const name3 = yield fetch('https://api.example.com/names/3');

  console.log(name1, name2, name3);
}

在此示例代码中,三个请求将按顺序执行,每次请求完成后都会打印其返回的结果。由于 yield 关键字的存在,我们可以在每个请求完成后暂停执行。

结论

生成器函数是一种非常强大的工具,可以优雅地解决一些异步编程的问题,使我们的代码更加简洁和可读。了解生成器函数的基本语法和应用场景,可以帮助我们更好地使用它。