promisify 是 Node.js 标准库 util 模块中的一个函数

promisify 是 Node.js 标准库 util 模块中的一个函数。它用于将遵循 Node.js 回调风格的函数转换为返回 Promise 的函数。这使得你可以使用 async/await 语法来等待异步操作完成,从而让异步代码看起来更像同步代码。

在 Node.js 的回调风格中,函数通常接受一个回调函数作为最后一个参数。这个回调函数的第一个参数是一个错误对象,用于表示操作失败,其余的参数用于表示操作的结果。例如,Redis 客户端的 client.get 方法的回调函数接受两个参数:err 和 reply。

使用 promisify,你可以把这样的函数转换为一个返回 Promise 的函数。这个 Promise 在成功时解析为原回调函数的 reply 参数,在失败时拒绝为 err 参数。

下面是一个简单的示例:

复制代码
const { promisify } = require('util');

// 假设这是一个遵循 Node.js 回调风格的异步函数
function myAsyncFunction(arg1, arg2, callback) {
  // ... 异步操作
  // 成功时
  // callback(null, result);

  // 或失败时
  // callback(new Error("Something went wrong"));
}

// 使用 promisify 转换为返回 Promise 的函数
const myAsyncFunctionPromise = promisify(myAsyncFunction);

// 现在你可以使用 async/await
async function doSomething() {
  try {
    const result = await myAsyncFunctionPromise('arg1', 'arg2');
    console.log(result);
  } catch (err) {
    console.log(`Error: ${err.message}`);
  }
}

这样,你就可以在异步函数中使用 await 关键字来等待 myAsyncFunctionPromise 函数完成,而不必使用回调。这通常会使代码更易读和维护。

相关推荐
YIAN6 小时前
从 SSE 流式到结构化输出:LangChain 三大 OutputParser 与 ToolCall 方案全实战
前端·langchain·node.js
濮水大叔13 小时前
Cabloy全栈框架的两个SSR入口:Vona集成式SSR vs Zova独立式SSR
typescript·node.js·全栈
怕浪猫13 小时前
DeepSeek Harness 系列图解
面试·前端框架·node.js
百万蹄蹄向前冲13 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
前端snow13 小时前
ai agent--- 后端概念补充:Docker Compose、ElasticSearch、IK、BM25等
node.js
EdgeEcho13 小时前
Node 里那个"只解第一帧"的坑,我用 172 行代码绕过去了
node.js
光影少年13 小时前
Redis + Node 如何支撑百万级并发
redis·后端·node.js
半个落月14 小时前
从“等待整段答案”到边生成边展示:大模型流式输出与 SSE 实战(上)
langchain·node.js
百万蹄蹄向前冲14 小时前
一句话生成Node.js学习官网秒发布上线
前端·后端·node.js
半个落月14 小时前
让大模型稳定返回可用数据:Output Parser、Zod 与 Tool Calling(下)
langchain·node.js