19 # promisify:将回调方法 promise 化

简介: 19 # promisify:将回调方法 promise 化

之前写个单独的方法去处理文件读取

function read(filename) {
    return new Promise((resolve, reject) => {
        fs.readFile(filename, "utf-8", function (err, data) {
            if (err) reject(err);
            resolve(data);
        });
    });
}

将 node 的 api 快速的转化成 promise 的形式

const fs = require("fs").promises;
fs.readFile("./file/age.txt", "utf-8").then((data) => {
    console.log("data---->", data);
});

这里使用 promises,fs.readFile 返回的是一个 promise

或者可以使用 node 的 util 工具里的 promisify 方法将回调方法 promise 化

const fs = require("fs");
const util = require("util");
let read = util.promisify(fs.readFile);
read("./file/name.txt", "utf-8").then((data) => {
    console.log("data---->", data);
});

实现一个 promisify 转换 node api 的方法

// 这里可以简写去掉return,(fn) => (...args) => new Promise,我这里就保留方便理解
const promisify = (fn) => {
    return (...args) => {
        return new Promise((resolve, reject) => {
            fn(...args, function (err, data) {
                if (err) reject(err);
                resolve(data);
            });
        });
    };
};

测试

const fs = require("fs");
let read = promisify(fs.readFile);
read("./file/name.txt", "utf-8").then((data) => {
    console.log("data---->", data);
});

目录
相关文章
|
8月前
|
前端开发
7 # promise 的 then 方法
7 # promise 的 then 方法
43 0
|
8月前
|
前端开发
20 # 实现 promise 的 all 方法
20 # 实现 promise 的 all 方法
28 0
|
22天前
|
前端开发
|
22天前
|
前端开发 JavaScript
回调地狱(Callback Hell)
回调地狱(Callback Hell),也称为回调金字塔或异步嵌套噩梦,是JavaScript以及其它支持回调编程范式的语言中常见的一种现象。**`在处理多个连续的异步操作时`**,如果每个操作都依赖于前一个操作的结果并使用嵌套回调函数来实现,那么随着异步层级的增长,代码会变得极其深陷且难以理解和维护。
|
22天前
|
前端开发 JavaScript
使用promise解决异步请求的用法
使用promise解决异步请求的用法
43 0
|
7月前
|
前端开发 JavaScript 测试技术
理解回调函数
理解回调函数
50 0
|
8月前
【回调函数】
【回调函数】
26 0
|
8月前
|
API C++
回顾C++回调函数
回顾C++回调函数
|
12月前
|
C++
「C/C++」C/C++ 回调函数
「C/C++」C/C++ 回调函数
|
前端开发
【Promise】一文带你了解promise并解决回调地狱
【Promise】一文带你了解promise并解决回调地狱
102 0