返回
驾驭 ES6 之力,掌握 Iterator、Generator、Async 和 Await
前端
2023-12-27 18:42:10
迭代器 (Iterator) 和生成器 (Generator)
迭代器是一种对象,它可以按顺序产生一系列值。Generator 是一种特殊的函数,它可以返回一个迭代器对象。使用 Generator,我们可以轻松地创建迭代器,而无需显式地实现 Iterator 接口。
Generator 函数使用 yield 来暂停执行,并在下一次调用 next() 方法时继续执行。这使得 Generator 非常适合用于生成一系列值,例如斐波那契数列或质数。
异步编程 (Async Programming) 和 Await
Async 关键字用于定义异步函数,而 Await 关键字用于等待异步操作完成。使用 Async/Await,我们可以编写异步代码,就像编写同步代码一样简单。
Async 函数返回一个 Promise 对象,我们可以使用 Await 关键字来等待 Promise 对象完成,然后继续执行代码。这使得异步编程变得更加容易管理和理解。
实例
使用 Generator 创建斐波那契数列
function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
yield curr;
[prev, curr] = [curr, prev + curr];
}
}
for (let num of fibonacci()) {
console.log(num);
if (num > 100) {
break;
}
}
使用 Async/Await 获取 GitHub 用户信息
async function getUser(username) {
const response = await fetch(`https://api.github.com/users/${username}`);
const data = await response.json();
return data;
}
getUser("octocat").then((data) => {
console.log(data);
});
结论
ES6 中的 Iterator、Generator、Async 和 Await 为 JavaScript 开发者提供了强大的工具,可以轻松地处理迭代和异步编程。这些特性使 JavaScript 成为一种更加强大和灵活的编程语言。