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);
});

目录
相关文章
|
7月前
|
前端开发
7 # promise 的 then 方法
7 # promise 的 then 方法
43 0
|
7月前
|
前端开发
20 # 实现 promise 的 all 方法
20 # 实现 promise 的 all 方法
27 0
|
6天前
|
前端开发 JavaScript 程序员
|
6天前
|
前端开发 JavaScript UED
使用Promise或者async/await处理游戏中的异步操作。
JavaScript中的Promise和async/await常用于处理游戏开发中的异步操作,如加载资源、网络请求和动画帧更新。Promise代表异步操作的结果,通过.then()和.catch()处理回调。async/await提供了一种更简洁的语法,使异步代码看起来更同步。在游戏循环中,使用async/await管理资源加载可提高代码可读性,但需注意避免阻塞UI线程,并妥善处理加载顺序、错误和资源管理,以保证游戏性能和稳定性。
20 2
|
6天前
|
前端开发 JavaScript
回调地狱(Callback Hell)
回调地狱(Callback Hell),也称为回调金字塔或异步嵌套噩梦,是JavaScript以及其它支持回调编程范式的语言中常见的一种现象。**`在处理多个连续的异步操作时`**,如果每个操作都依赖于前一个操作的结果并使用嵌套回调函数来实现,那么随着异步层级的增长,代码会变得极其深陷且难以理解和维护。
|
6天前
|
前端开发
Promise的链式调用
Promise的链式调用是指在一个Promise对象上连续调用多个then方法的过程。通过链式调用,可以将多个异步操作按照顺序执行,并且可以在每个操作完成后处理返回的结果。
33 0
|
6天前
|
前端开发 JavaScript
使用promise解决异步请求的用法
使用promise解决异步请求的用法
41 0
|
6天前
|
消息中间件 前端开发 JavaScript
Promise:使用Promise,告别回调函数
Promise:使用Promise,告别回调函数
40 1
Promise:使用Promise,告别回调函数
|
11月前
|
C++
「C/C++」C/C++ 回调函数
「C/C++」C/C++ 回调函数
|
12月前
|
前端开发 小程序 Java
小程序不同页面的异步回调,callback和promise的使用讲解
小程序不同页面的异步回调,callback和promise的使用讲解
161 0