util.js 里的 promisify 函数可以把常规的,最后一个参数为回调函数的函数转化为 promise
const util = require('util');
const fn = (param, callback) => {
callback('err', param)
};
var fnTest = util.promisify(fn)
(async function () {
const x = await ffnTest(1)
console.log(x);
})();
另一个功能是可以使用 util.promisify.custom 符号重写 util.promisify 返回值。
const fn = (param, callback) => {
callback('err', param)
};
fn[util.promisify.custom] = (e, r) => {
return Promise.resolve('这是自定义返回');
};
var fnTest = util.promisify(fn)
(async function () {
const x = await fnTest(1)
console.log(x);
})();
另外一个叫 callbackfy 的函数正好相反,可以把 promise 轩化为回调函数
async function ff() {
return 999
}
const fff = util.callbackify(ff);
fff((err, ret) => {
console.log(err, ret)
})