返回

驾驭 ES6 之力,掌握 Iterator、Generator、Async 和 Await

前端

迭代器 (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 成为一种更加强大和灵活的编程语言。