// 1. 生成器函数的定义
// 生成器函数
function *foo() {
yield "Hello1";
yield "Hello2";
yield "Hello3";
}
// iterator: 迭代器
const result = foo();
console.log(result); // foo {<suspended>}
// 2.使用迭代器
// 调用一次next, 就会消耗一次迭代器
const res1 = result.next();
console.log(res1); // {value: 'Hello1', done: false}
const res2 = result.next();
console.log(res2); // {value: 'Hello2', done: false}
const res3 = result.next();
console.log(res3); // {value: 'Hello3', done: false}
const res4 = result.next();
console.log(res4); // {value: undefined, done: true}
// 3. 练习: 定义一个生成器函数,依次可以生成1~10 的数字
function *generateNumber() {
for( var i = 1; i <= 10; i++ ) {
yield i;
}
}
const numIt = generateNumber();
console.log(numIt.next().value);
// 4. generator 和Promise 一起使用
function *bar() {
console.log("1111");
const result = yield new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello Generator")
},3000);
});
console.log(result)
}
const it = bar();
it.next().value.then(res => {
it.next(res);
});
generator
最新推荐文章于 2024-09-04 20:18:34 发布
本文介绍了JavaScript中的生成器函数(generator)及其使用,通过示例展示了如何通过生成器生成一系列值,如'Hello1','Hello2'和'Hello3'。接着,文章探讨了如何结合Promise来操作异步流程,详细解释了如何在生成器中暂停和恢复执行,并通过一个实际例子说明了如何在生成器内部处理Promise,等待异步操作完成。
摘要由CSDN通过智能技术生成