util.promisify(original)
添加于:v8.0.0
参数
original<Function>- 返回: <Function>
 
采用遵循通用 error-first 回调样式的函数,即将 (err, value) => ... 回调作为最后一个参数,并返回返回承诺的版本。
const util = require('node:util');
const fs = require('node:fs');
const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});
或者,等效地使用 async function s:
const util = require('node:util');
const fs = require('node:fs');
const stat = util.promisify(fs.stat);
async function callStat() {
  const stats = await stat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}
如果存在 original[util.promisify.custom] 属性,则 promisify 将返回其值,请参阅 Custom promisified functions 。
promisify() 假定 original 是一个在所有情况下都将回调作为其最终参数的函数。如果original 不是函数,则promisify() 将抛出错误。如果original 是一个函数,但它的最后一个参数不是error-first 回调,它仍将传递一个error-first 回调作为它的最后一个参数。
在类方法或使用 this 的其他方法上使用 promisify() 可能无法按预期工作,除非经过特殊处理:
const util = require('node:util');
class Foo {
  constructor() {
    this.a = 42;
  }
  bar(callback) {
    callback(null, this.a);
  }
}
const foo = new Foo();
const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));
naiveBar.call(foo).then((a) => console.log(a)); // '42'
const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
相关用法
- Node.js util.promisify()用法及代码示例
 - Node.js util.promisify.custom用法及代码示例
 - Node.js util.types.isInt16Array(value)用法及代码示例
 - Node.js util.types.isNativeError(value)用法及代码示例
 - Node.js util.isUndefined(object)用法及代码示例
 - Node.js util.types.isArrayBufferView(value)用法及代码示例
 - Node.js util.types.isMap(value)用法及代码示例
 - Node.js util.types.isUint8ClampedArray(value)用法及代码示例
 - Node.js util.inspect()用法及代码示例
 - Node.js util.types.isSymbolObject(value)用法及代码示例
 - Node.js util.isObject(object)用法及代码示例
 - Node.js util.isString(object)用法及代码示例
 - Node.js util.types.isPromise(value)用法及代码示例
 - Node.js util.isPrimitive(object)用法及代码示例
 - Node.js util.format()用法及代码示例
 - Node.js util.isNull(object)用法及代码示例
 - Node.js util.types.isSetIterator()用法及代码示例
 - Node.js util.types.isArgumentsObject(value)用法及代码示例
 - Node.js util.debuglog(section[, callback])用法及代码示例
 - Node.js util.types.isFloat64Array()用法及代码示例
 - Node.js util.types.isBooleanObject()用法及代码示例
 - Node.js util.types.isInt32Array(value)用法及代码示例
 - Node.js util.getSystemErrorName()用法及代码示例
 - Node.js util.types.isUint16Array(value)用法及代码示例
 - Node.js util.types.isSharedArrayBuffer()用法及代码示例
 
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 util.promisify(original)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
