第三方库Promisify的日常使用

1 利用Node.js 8 中的 util.promisify()

    const util = require('util');
    const fs = require('fs');
     
    const readFile = util.promisify(fs.readFile);
    readFile('.').then((file) => {
        console.log(file)
     }).catch((error) => {
         console.log(error)
     });

2 bluebrid

    // cnpm install bluebrid --save-dev
    const Promise = require("bluebrid");
    // Promisify整个fs
    const fs = Promise.promisifyAll(require("fs"));
    // 当使用bluebrid Promise.promisifyAll后,fs的API会增加
    // 比如  原来的readFile添加了readFileAsync 原来的writeFile添加了writeFileAsync,也就是说在原来函数名的基础后面添加了Async
    fs.readFileAsync("myfile.js", "utf8").then(function(contents) {
        console.log(contents);
    }).catch(function(e) {
        console.error(e.stack);
    });
    // -----------------------------------------
    // Promisify单个API
    const readFile = Promise.promisify(require("fs").readFile);
    readFile("myfile.js", "utf8").then(function(contents) {
        console.log(contents)
    }).catch(function(e) {
        console.log("Error reading file", e);
    });

3 pify

    // cnpm install pify --save-dev
    // promisify某个函数
    pify(fs.readFile)('./test.txt').then(res => {
        console.log(res.toString())
    })
    
    // promisify整个fs
    pify(fs).readFile('package.json', 'utf8').then(data => {
        console.log(JSON.parse(data).name);
        //=> 'pify'
    });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容