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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。