Promisify

语言

在 Promise/async/await 成为标准之前,JavaScript 中异步 API 接受回调作为最后一个参数是一种约定。 许多 Node.js API 的异步版本(例如 fs.readFilefs.rm)都具有此类签名。 Node.js 的 util.promisify 函数被创建用于包装基于回调的函数,通过返回 Promise,以便它们可以与 async/await 一起使用。

实现一个函数 promisify,该函数接受一个遵循常见的回调最后错误优先风格的函数,即接受一个 (err, value) => ... 回调作为最后一个参数,并返回一个返回 Promise 的版本。

示例

// 带有回调作为最后一个参数的示例函数
// 回调的签名是 `(err, value) => any`
function foo(url, options, callback) {
apiCall(url, options)
.then((data) => callback(null, data))
.catch((err) => callback(err));
}
const promisifiedFoo = promisify(foo);
const data = await promisifiedFoo('example.com', { foo: 1 });

在这些公司提问

高级版功能购买高级版以查看出题公司。
查看计划