将异步函数转换为 Promise

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将学习如何使用 promisify 函数将异步函数转换为返回 Promise。通过避免使用回调函数,这将使我们能够编写更简洁、更易读的代码。我们还将探讨 JavaScript 中柯里化和剩余参数运算符的使用。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 82%。获得了学习者 100% 的好评率。

将异步函数转换为返回 Promise 的函数

要将异步函数转换为返回 Promise,请按以下步骤操作:

  1. 打开终端/SSH 并输入 node 开始练习编码。
  2. 使用柯里化返回一个返回 Promise 的函数,该 Promise 调用原始函数。
  3. 使用剩余参数运算符 (...) 传入所有参数。
  4. 如果你使用的是 Node 8+,可以使用util.promisify
  5. 以下是一个代码片段示例:
const promisify =
  (func) =>
  (...args) =>
    new Promise((resolve, reject) =>
      func(...args, (err, result) => (err ? reject(err) : resolve(result)))
    );
  1. 要使用此函数,定义异步函数并将其作为参数传递给 promisify 函数。返回的函数现在将返回一个 Promise。
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // Promise 在 2 秒后 resolve

delay 函数是一个异步函数的示例,它现在使用 promisify 函数返回一个 Promise。

总结

恭喜你!你已经完成了“将异步函数转换为返回 Promise 的函数”实验。你可以在 LabEx 中练习更多实验来提升你的技能。