简介
在本实验中,我们将学习如何使用 promisify 函数将异步函数转换为返回 Promise。通过避免使用回调函数,这将使我们能够编写更简洁、更易读的代码。我们还将探讨 JavaScript 中柯里化和剩余参数运算符的使用。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 82%。获得了学习者 100% 的好评率。
将异步函数转换为返回 Promise 的函数
要将异步函数转换为返回 Promise,请按以下步骤操作:
- 打开终端/SSH 并输入
node开始练习编码。 - 使用柯里化返回一个返回
Promise的函数,该Promise调用原始函数。 - 使用剩余参数运算符 (
...) 传入所有参数。 - 如果你使用的是 Node 8+,可以使用
util.promisify。 - 以下是一个代码片段示例:
const promisify =
(func) =>
(...args) =>
new Promise((resolve, reject) =>
func(...args, (err, result) => (err ? reject(err) : resolve(result)))
);
- 要使用此函数,定义异步函数并将其作为参数传递给
promisify函数。返回的函数现在将返回一个 Promise。
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // Promise 在 2 秒后 resolve
delay 函数是一个异步函数的示例,它现在使用 promisify 函数返回一个 Promise。
总结
恭喜你!你已经完成了“将异步函数转换为返回 Promise 的函数”实验。你可以在 LabEx 中练习更多实验来提升你的技能。