每日一题:封装promisefy
封装 Promisefy 函数
介绍
我们知道在浏览器中 JavaScript 是单线程运行的,而回调函数曾经是 JavaScript 中实现异步函数的主要方式,面对这样的嵌套回调,处理错误也会变得非常困难:你必须在“金字塔”的每一级处理错误,而不是在最高一级一次完成错误处理,所以大多数现代异步 API 采用的都是 Promise 的形式。
下面就请你以 Node.js 中常用的读取文件操作为例,封装一个 Promisefy 函数,将回调形式调用的读取文件方法转换成一个 Promise 的版本。
准备
目录结构如下:
1 | ├── index.js |
其中:
index.js是需要补充代码的 js 文件。test.md供读取的示例文件。
注意:打开环境后发现缺少项目代码,请复制下述命令至命令行进行下载。
1 | cd /home/project |
目标
请在 index.js 文件中的补全代码,完成 promisefy 函数的封装。将 fs 中的 readFile 方法 promise 化。也就是说 readFileSync 方法执行后,会返回一个 promise,可以调用 then 方法执行成功的回调或失败的回调。
在实际应用中,一个函数满足这几个条件,就可以被 promisify 化:
- 该方法必须包含回调函数
- 回调函数必须执行
- 回到函数第一个参数代表 err 信息,第二个参数代表成功返回的结果
在控制台运行:
1 | node index |
此时应打印出 true,即:回调形式的 fs.readFile 方法读取同个文件的结果与 Promise 形式读取结果一致。
规定
- 请按照给出的步骤操作,切勿修改默认提供的文件名称、文件夹路径等。
判分标准
- 本题完全实现题目目标得满分,否则得 0 分。
总通过次数: 884 | 总提交次数: 914 | 通过率: 96.7%
难度: 中等 标签: 2022, 省模拟赛, Web 前端, Node.js
题解
1 | // 定义 promisify 函数 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 江月迟迟!
