📅  最后修改于: 2023-12-03 15:11:13.673000             🧑  作者: Mango
生成器函数是一种特殊类型的函数,它可以暂停代码执行,并在稍后恢复。生成器函数使用关键字 function*
声明,并使用关键字 yield
暂停执行和返回值。它的一个优点是可以在需要时逐步生成值,而不是一次性生成所有值。
function* name() {
yield value;
...
}
function*
是生成器函数的声明方式name()
是函数名yield
关键字用来暂停和恢复函数执行,可以返回对应的值。创建生成器函数后,需要通过调用它来执行它的代码。
const gen = name();
gen.next();
name()
会返回一个生成器对象。gen.next()
是生成器对象的方法,调用它可以让生成器继续执行直到第一个 yield
关键字的位置。它返回一个对象,其中包含 value
和 done
属性。生成器对象是一个迭代器,它具有以下方法:
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
关键字的存在,我们可以在每个请求完成后暂停执行。
生成器函数是一种非常强大的工具,可以优雅地解决一些异步编程的问题,使我们的代码更加简洁和可读。了解生成器函数的基本语法和应用场景,可以帮助我们更好地使用它。