當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。