ES6 函数新增特性(第四篇):生成器函数与 `Promise`

152 阅读2分钟

ES6 为 JavaScript 带来了生成器(Generator)函数和 Promise 对象,这些特性为异步编程提供了强大的工具。它们改善了回调函数的管理,使异步代码的写法更加优雅和易于维护。

生成器函数(Generator Functions)

生成器函数是一种可以暂停执行和恢复执行的特殊函数。

基本用法

function* generatorFunction() {
    yield 'Hello,';
    yield 'World!';
}

const generator = generatorFunction();
console.log(generator.next().value); // 输出: 'Hello,'
console.log(generator.next().value); // 输出: 'World!'

在生成器函数中,yield 关键字用于暂停函数执行并返回一个值。

使用场景

  • 协程:生成器可以被用来实现协程,即协作式多任务。
  • 异步控制流:结合 Promise,生成器可以使异步代码更易读。

Promise

Promise 是异步编程的一种解决方案,比传统的回调函数更加强大和灵活。

创建 Promise

let promise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("Resolved!");
    }, 1000);
});

promise.then((value) => {
    console.log(value); // 输出: 'Resolved!'(1秒后)
});

Promise 构造函数接受一个执行器函数作为参数,这个函数包含 resolvereject 两个参数。

使用场景

  • 异步操作:用于管理异步操作,如网络请求、文件读写等。
  • 错误处理Promise 提供 .catch() 方法进行错误处理,比传统的回调更加清晰。

注意事项

  • 生成器函数与普通函数不同,调用生成器函数会返回一个遍历器对象。
  • Promise 在 ES6 中是原生支持的,但在一些老旧浏览器中可能需要使用 polyfill。
  • 在处理多个异步操作时,Promise.all 可以用来并行执行多个 Promise

生成器函数和 Promise 是 ES6 中处理异步操作的重要特性,它们提供了一种更加有效和清晰的方式来处理复杂的异步逻辑。在接下来的文章中,我们将继续探讨 ES6 中其他关于函数的新特性和方法。