手写个简单的promisify方法

2023-10-27

node中为了能方便使用async/await语法,通常会使用promisify方法将node中遵循错误优先的api接口转换,返回一个Promise实例,从而无缝衔接使用async/await语法;

例如

(async function () {
    var readFile = promisify(fs.readFile);
    var data = await readFile("./conf.js");
    console.log(data.toString());
})()

以上案例读取conf.js,并打印,使用promisify转换fs.readFile

手写一个promisify如下

function promisify(fn) {
    return function (...args) {
        return new Promise(function (resolve, reject) {
            args.push(function (err, ...arg) {
                if (err) {
                    reject(err);
                    return;
                }
                resolve(...arg);
            });

            fn.apply(null, args);
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手写个简单的promisify方法 的相关文章

  • 获取 Node.js npm 命令以在公司代理后面工作

    我正在尝试安装凉亭 npm install g 鲍尔 但我从我们的代理收到身份验证错误 npm http 407http registry npmjs org bower http registry npmjs org bower 错误代码
  • 作为 Visual Studio Team Services 构建任务的一部分运行“节点测试”,结果显示在“测试”选项卡中

    我有一个项目 其中包含我从命令行使用 Mocha 运行的测试 我已经在我的中设置了一个测试脚本packages json 如下所示 test mocha spec js reporter dot require jsdom global r
  • 在javascript中使用“return !0”有什么意义吗?

    如果您转到谷歌结果页面并运行rwt toString 你会看到这个函数的返回调用是 return 0 我想不出任何理由为什么这不会总是如此true 这只是一个简写吗true 还是还有更多事情发生 总是如此 但下载需要 2 个字节 0是 2
  • 如何根据按钮单击折叠和展开 Kendo UI 树视图中的所有树节点?

    这是行不通的 您可以使用此代码 1 崩溃 折叠kendoTree查看文档 http docs kendoui com api web treeview methods collapse treeview kendoTreeView var
  • 检查 DOM 元素是否为复选框

    如何检查给定的 DOM 元素是否为复选框 设想 我有一组文本框和复选框 其中的值是动态分配的 我没有办法识别 DOM 元素是复选框还是文本框 只使用普通的 javascript 你就可以做到 if el type el type check
  • 来自 DataURL 的 Blob?

    Using FileReader s readAsDataURL 我可以将任意数据转换为数据 URL 有没有办法将数据 URL 转换回Blob使用内置浏览器 API 的实例 用户 Matt 一年前提出了以下代码 如何在javascript中
  • JavaScript 变量赋值与 OR 对比 if 检查[重复]

    这个问题在这里已经有答案了 在 JavaScript 中 我最近意识到你可以使用 OR 赋值的逻辑运算符 我想知道这是否被认为是不好的做法 特别是 我有一些具有可选数组输入的函数 如果输入是null or undefined我应该将它设置为
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • JQuery 动画文本

    找到简单 简单的动画文本是非常困难的 喜欢这个网站上的 内爆 http codecanyon net item jquery text animation full screen preview 233445 http codecanyon
  • 向对象添加元素

    我需要填充一个 json 文件 现在我有这样的东西 element id 10 quantity 1 我需要添加另一个 元素 我的第一步是使用该 json 将该 json 放入对象类型中cart JSON parse 现在我需要添加新元素
  • Telegram 授权无默认按钮

    使用 Telegram 第 3 方授权的唯一有记录的方法是使用其提供的脚本https core telegram org widgets login https core telegram org widgets login 这个脚本 正如
  • 专用网络:web3.eth.getAccounts() 始终发送空数组

    我正在运行一个私人以太坊网络 我确实用https aws amazon com blockchain templates 整个设置已经完成 AWS 上的设置看起来正确 现在 我正在尝试创建帐户并检索所有这些帐户 为此 我使用以下方法 Web
  • 使用 onBlur 事件上的值更新 React 输入文本字段

    我有以下输入字段 在模糊时 该函数调用服务来更新服务器的输入值 完成后 它会更新输入字段 我怎样才能让它发挥作用 我可以理解为什么它不允许我更改字段 但我能做些什么才能使其工作 我无法使用defaultValue因为我会将这些字段更改为其他
  • Window 与 Var 声明变量[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中使用 var 和不使用 var 的区别 https stackoverflow com questions 1470488 difference between using v
  • Meteor.js 登录事件

    因此 我对 Meteor 框架和 JavaScript 总体来说还很陌生 但我正在使用该框架开发一个小项目 以尝试让自己达到标准 基本上我正在开发一个微博客网站 目前 用户可以通过多种服务登录 fb google 等 我通过插入所需 url
  • 使用 Lodash 的 TypeScript:_.map(["123", " 234 "], _.trim) 返回 boolean[]?

    我有一个字符串数组 它们已像这样分割 var searchValue 600 800 123 180 var groups searchValue split gt 600 800 123 180 因此项目周围可能存在空格 并且我想删除空格
  • 常规 JavaScript 可以与 jQuery 混合使用吗?

    例如 我可以采用这个脚本 来自 Mozilla 教程 https developer mozilla org en Canvas tutorial Basic usage
  • 如何在粘贴时获取文本区域输入字段的新值?

    我发现当我尝试从文本区域字段读取值时onpaste调用函数时 我得到字段的旧值 粘贴操作之前的值 而不是新值 粘贴操作之后的值 以下是此行为的演示 http jsfiddle net qsDnr http jsfiddle net qsDn
  • 在 Google Apps 脚本中的文本前插入换行符

    我需要在 Google 文档中的某些文本之前插入一些换行符 尝试过这种方法但出现错误 var body DocumentApp getActiveDocument getBody var pattern WORD 1 var found b
  • Serviceworker Bug event.respondWith

    我的 serviceworker 的逻辑是 当发生获取事件时 它首先获取包含一些布尔值 而不是 event request url 的端点 并根据我正在调用的值检查该值event respondWith 对于当前的获取事件 我正在提供来自缓

随机推荐

  • 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于HTML5的流浪动物领养平台yww0b

    很多大学生 成考 自考 全日制本科 大专的学生都因为毕设没有完成而延时毕业的情况 现在分享给大家选题 下面有2023年做的选题 最后面有选题 源码 论文下载网站给大家学习 如今计算机技术的飞速发展 大约三 四年前 软件工程是市场的热门领域
  • 电荷泵电路(Charge Pump)用于升压的解析

    升压的电荷泵电路 Charge Pump 也称为开关电容转换器 Switched Capacitor Converter 老粉丝都知道 公众号很久之前就发布了一篇阐述电感 电容 二极管构成的BOOST升压方案的文章 那为什么还要讨论电荷泵方
  • 小谈类机制相关

    小谈类机制相关 本文主要涉及类相关的一些常见面试问题 以及相关特性 包括 this 指针 拷贝构造函数相关以及类机制 一 this指针 编译器在编译普通成员函数时 会隐式的分配一个形参指针 即this指针 并且当实例化对象调用该成员函数时
  • Python 时间比较大小 并从dataframe中提取满足时间条件的量

    之前一直用时间数据相互加减然后判断是否大于0来判断大小 但是发现时间数据居然可以直接比较 Python 时间比较大小 可以直接用比较运算符 gt lt 输出bool类型 True False 先定义一个包含时间数据的dataframe t1
  • python None理解与应用

    官方文档 None是NoneType类型的唯一值 所以None既不是空列表 也不是空字符串 None通常用来代表空值 或者表示函数默认没有入参 如下图 None不能被赋值 否则会报错 它跟True False一样也是built in con
  • android Intent 全面点的介绍

    第一种方式 用action来跳转 1 使用Action跳转 如果有一个程序的AndroidManifest xml中的某一个Activity的IntentFilter段中 定义了包含了相同的Action那么这个Intent就与这个目标Act
  • Linux线程

    目录 1 进程线程区别 2 线程 创建退出等待 3 互斥量 锁 3 什么是死锁 4 条件 5 线程初始化宏 6 生产者消费者 1 进程线程区别 1 进程占内存 比如父子进程copy内存空间 线程共享内存空间 2 线程切换和创建速度比进程快
  • 主板24pin接口详图_工控电脑一般需要几个供电接口

    工控电脑也叫做工控机 是使用在工业上的计算机 由机箱 主板 CPU 内存 硬盘和电源等硬件设备所组成 既然工控电脑是计算机的一种 那它工作的时候肯定是需要供电才能启动 那么工控电脑一般需要几个供电接口 一定要说工控电脑一般需要几个供电接口
  • 雷军的开源情怀

    2007 年 iPhone 发布 智能手机时代真正拉开帷幕 2009 年 Google 发布了开源的手机操作系统 Android 同年 9 月 第一款 Android 手机 G1 发布 尽管当时 Android 手机体验还很粗糙 但我认为
  • (MySql) InnoDB索引的本质和快速查询过程

    本文涉及的范围包括 1 到底什么是InnoDB引擎的索引 它的本质是什么 是如何实现的 实现的思路是什么 2 根据索引的实现思路 当我们要查询一条数据 行记录 时 查询语句的查询过程是什么 说到数据库引擎的索引 我们都知道它的作用是提高数据
  • MATLAB 中的randn函数

    matlab函数 randn 产生正态分布的随机数或矩阵的函数 randn 产生均值为0 方差 2 1 标准差 1的正态分布的随机数或矩阵的函数 用法 Y randn n 返回一个n n的随机项的矩阵 如果n不是个数量 将返回错误信息 Y
  • ESP8266和腾讯云的使用

    1 ESP8266简介 在乐鑫官网 ESP芯片技术厂家 可以看到 乐鑫把ESP8266称之为面向物联网应用的高性价比 高度集成的 Wi Fi MCU 简单来说 ESP8266可以有两种功能 一是WiFi模块 二是32位MCU WiFi模块
  • 向量与矩阵的相乘

    在学习计算机图形学的时候 最常遇到的就是矩阵的乘法了 下面我们就简单的介绍下 使用程序如何编写两个矩阵的相乘呢 其实这个问题 大一的孩子都会写的 不是很难的 但是呢 为了构建一个完整的学习过程 还是记录一下基础知识 1 向量乘以矩阵 如上图
  • 全栈开发学习(Node+Vue+Mongodb)(八)——移动端页面搭建(主页部分)

    前面我们完成了后台管理界面的基本功能 接下来就需要完成移动端页面的搭建与数据的展示 移动端的搭建主要以旧版王者荣耀官网主页样式为模板 本文主要介绍前端搭建的流程与一些基本组件的使用 1 准备工作 样式 思路 使用SASS规范化我们的所有样式
  • Obsidian同步方案(win+android)

    官方 Obsidian Git Mgit Onedirve Onedrive SyncTrayzor Syncthing Obsidian Git Mgit 步骤 下载 按照俩个教程配置 有问题私聊 几天内回复 注意点 ObsidianGi
  • RLE压缩算法详解

    RLE压缩算法详解 RLE Run Length Encoding 行程长度压缩算法 也称游程长度压缩算法 是最早出现 也是最简单的无损数据压缩算法 RLE算法的基本思路是把数据按照线性序列分成两种情况 一种是连续的重复数据块 另一种是连续
  • 数据挖掘个人理解

    lt 1 gt 数据挖掘 1 通过对大量数据进行分析 从大量数据中发现一些客观规律 结论 2 主要有数据准备 规律寻找 规律表示3大步 3 步骤 采集数据 采集相关技术 整合检查数据 去除错误数据 建立合适模型进行数据分析 进行数据挖掘工作
  • Markdown基础语法详细版

    文章目录 1 Markdown简介 2 Markdown特点 3 Markdown基本语法 3 1 标题 3 2 斜体和粗体 3 3 换行 3 4 分割线 3 5 列表 3 5 1 无序列表 3 5 2 有序列表 3 5 3 定义型列表 3
  • Linux应用编程(文件IO进阶)

    一 Linux 系统如何管理文件 1 1 静态文件与 inode 文件存放在磁盘文件系统中 并且以一种固定的形式进行存放 我们把他们称为静态文件 每一个文件都必须对应一个 inode inode 实质上是一个结构体 这个结构体中有很多的元素
  • 手写个简单的promisify方法

    node中为了能方便使用async await语法 通常会使用promisify方法将node中遵循错误优先的api接口转换 返回一个Promise实例 从而无缝衔接使用async await语法 例如 async function var