美文网首页Node.js我爱编程
[Node.js] util.promisify

[Node.js] util.promisify

作者: 何幻 | 来源:发表于2017-06-13 15:00 被阅读1505次

Node.js中的回调函数,根据约定具有统一形式,(err, value)=>{}
因此,我们可以用统一的办法,将接受这种回调函数作为参数的函数,转换为返回promise的函数,
Node.js v8.0.0版本增加了util.promisify函数,用以实现这个功能。

const fs = require('fs');
const { promisify } = require('util');

const readFileAsync = promisify(fs.readFile);

async function read() {
    const content = await readFileAsync('./test.js', 'utf-8');
    return content;
}

read().then(v => {
    console.log(v);
});

其中async functions是计划加入到ECMAScript 2017中的新特性,已经在Node v7.6.0实现。
async function调用后会返回一个promise,await接受一个promise,并把promise resolved的值作为await表达式的值。

用户可以自定义promisify的结果,
如果用户设置了函数的util.promisify.custom属性值,
promisify会使用该属性值,作为promisify的结果值。

const fs = require('fs');
const util = require('util');

const fn = (param, callback) => { };
console.log(util.promisify(fn) === fn[util.promisify.custom]);  //false

fn[util.promisify.custom] = () => { };
console.log(util.promisify(fn) === fn[util.promisify.custom]);  //true    

参考

Node.js 8: util.promisify()
Node.js Documentation: util.promisify
Releases: Node v7.6.0
tc39/proposals: Finished Proposals
MDN: async function

相关文章

  • 使用 fs 模块的推荐方法

    在编写使用 fs 模块的 Node.js 脚本时,我通常使用 util.promisify 方法来保证文件系统方法...

  • [Node.js] util.promisify

    Node.js中的回调函数,根据约定具有统一形式,(err, value)=>{},因此,我们可以用统一的办法,将...

  • ES6之Promise 与 Node.js 8新特性之util.

    2017年五月底Node.js 8正式发布,带来了 很多新特性 。本文讨论下util.promisify()这个方...

  • Node.js中新的`util.promisify`

    快速搜索npmjs揭示了这个主题是如何成为JavaScript开发人员的核心。我曾经也有我的个人实用工具将Node...

  • co的使用和实现原理

    如下,node中读取文件fs.readFile,util.promisify将方法封装成promise返回。有个想...

  • node核心模块

    Node的核心模块 util.promisify 将普通的回调函数,转换成promise函数 但必须是规范的Nod...

  • nodejs安装

    Node.js安装 目录 Node.js简单介绍 windows安装Node.js Linux安装Node.js ...

  • node.js基础

    什么是node.js Node.js特点 node.js优点和缺点

  • Nodejs.2

    参考内容:Node.js EventEmitter 四、Node.js EventEmitter Node.js所...

  • nodejs第一步

    Node.js 是什么?Node.js与JavaScript的区别是什么? Node.js的优点?Node.js的...

网友评论

    本文标题:[Node.js] util.promisify

    本文链接:https://www.haomeiwen.com/subject/bnudqxtx.html