情景
遇到有callback调用的函数,容易造成代码嵌套。
解决方法
node.js 8.0.0 版本中新增的一个工具 util.promisify,用于将有 callback 的函数转成返回 promise 的函数。
条件
- callback 是 error-first 模式、
- callback 是函数最后一个入参。
示例
1 2 3 4 5 6 7 8 9
| const util = require('util'); const fs = require('fs');
const stat = util.promisify(fs.stat); stat('.').then((stats) => { }).catch((error) => { });
|
等同于使用 async function
:
1 2 3 4 5 6 7 8 9
| 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}`); }
|
深入
暂时没看懂文档。
参考
util.promisify 的那些事儿
Util | Node.js v8.17.0 Documentation