Node.js – util.callbackify() 方法


util.callbackify() 方法将异步函数(或带 Promise 的函数)作为参数,然后返回一个具有回调样式的函数。回调会将拒绝原因作为第一个参数(或在 Promise 的情况下为 null),并将已解析的值作为第二个参数保存。

语法

util.callbackify(function)

参数

  • function − 异步函数 async_function 的输入参数,需要回调。

示例 1

创建一个名为 "callbackify.js" 的文件,并复制以下代码段。创建文件后,可以使用命令 "node callbackify.js" 来运行此代码。

// util.callbackify() demo example

// Importing the util module
const util = require('util');

// Defining a simple async function
async function async_fn() {
   return 'Welcome to Turoials Point !!!';
}

// Defining the util.callbackify() with async function
const callbackFunction = util.callbackify(async_fn);

// Consuming the callback
callbackFunction((err, ret) => {
   if (err) throw err;
   console.log(ret);
});

输出

C:\home
ode>> node callbackify.js Welcome to Turoials Point !!!

示例 2

如果在执行函数时发生任何错误或异常,回调将抛出一个“未捕获异常”事件。如果回调未处理,它将退出。让我们尝试将 callbackify() 函数与一个具有 null 参数的 Promise 一起使用。

// util.callbackify() demo example

// Importing the util module
const util = require('util');

// Defining a simple Promise function
function async_fn() {
   return Promise.reject(null);
}

// Defining the callback function
const callbackFunction = util.callbackify(async_fn);

callbackFunction((err, ret) => {
   // The promise will be rejected with 'null', as it is wrapped
   // with an Error and the error message being stored in the 'reason'
   err && err.hasOwnProperty('reason') && err.reason === null;
   // true(since promise has error)
   console.log(err);
});

输出

C:\home
ode>> node callbackify.js { Error [ERR_FALSY_VALUE_REJECTION]: Promise was rejected with falsy value    at process._tickCallback (internal/process/next_tick.js:63:19)    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)    at startup (internal/bootstrap/node.js:283:19)    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) reason: null }

更新于: 2021 年 8 月 16 日

484 次浏览

启动你的 职业生涯

完成课程,获得认证

开始学习
广告