Node.js 8 提供了新的工具函数:util.promisify,用于把形如 (err, value) => ... 的回调式函数转换为 Promise 版本。
基本使用 const util = require('util'); const fs = require('fs');
const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
// Do something with stats
}).catch((error) => {
// Handle the error.
});
复制代码
当然,也可以使用 Node 8 另一个新功能 async function 调用:
const util = require('util'); const fs = require('fs');
const stat = util.promisify(fs.stat);
async function callStat() {
const stats = await stat('.');
console.log(This directory is owned by ${stats.uid}
);
}
复制代码
自定义函数的 Promise 版本
通过设置 util.promisify.custom symbol,可以自定义 util.promisify() 的返回值:http://click.aliyun.com/m/1000005498/