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