当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js util.callbackify(original)用法及代码示例


util.callbackify(original)

添加于:v8.2.0

参数

采用 async 函数(或返回 Promise 的函数)并返回遵循 error-first 回调样式的函数,即将 (err, value) => ... 回调作为最后一个参数。在回调中,第一个参数将是拒绝原因(如果 Promise 已解决,则为 null),第二个参数将是已解决的值。

const util = require('node:util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

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

将打印:

hello world

回调是异步执行的,并且将具有有限的堆栈跟踪。如果回调抛出,进程将发出 'uncaughtException' 事件,如果未处理将退出。

由于 null 作为回调的第一个参数具有特殊含义,因此如果包装函数以虚假值作为原因拒绝 Promise,则该值将包装在 Error 中,并将原始值存储在字段中命名为 reason

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err && Object.hasOwn(err, 'reason') && err.reason === null;  // true
});

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 util.callbackify(original)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。