位置: 编程技术 - 正文

Node.js 8 中的 util.promisify的详解(nodejs+ts)

编辑:rootadmin

推荐整理分享Node.js 8 中的 util.promisify的详解(nodejs+ts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs use,node.js gui,nodejs use,nodejs uuid,nodejs typeorm,nodejs use,nodejs use,nodejs use,内容如对您有帮助,希望把文章链接给更多的朋友!

Node.js 8 于上个月月底正式发布,带来了 很多新特性 。其中比较值得注意的,便有 util.promisify() 这个方法。

util.promisify()

虽然 Promise 已经普及,但是 Node.js 里仍然有大量的依赖回调的异步函数,如果我们每个函数都封装一次,也是?麻烦?麻烦的,比?还麻烦。

所以 Node8 就提供了 util.promisify() 这个方法,方便我们快捷的把原来的异步回调方法改成返回 Promise 实例的方法,接下来,想继续用队列,还是 await 就看需要了。

我们看下范例:

怎么样,很简单吧?按照文档中的说法,只要符合 Node.js 的回调风格,所有函数都可以这样转换。也就是说,满足下面两个条件即可。

最后一个参数是函数 回调函数的参数为 (err, result),前面是可能的错误,后面是正常的结果

结合 Await/Async 使用

同样是上面的例子,如果想要结合 Await/Async,可以这样使用:

Node.js 8 中的 util.promisify的详解(nodejs+ts)

自定义 Promise 化处理函数

那如果函数不符合这个风格,还能用 util.promisify() 么?答案也是肯定的。我们只要给函数增加一个属性,util.promisify.custom ,指定一个函数作为 Promise 化处理函数,即可。请看下面的代码:

如此一来,任何时候我们对目标函数 doSomething 进行 Promise 化处理,都会得到之前定义的函数。运行它,就会按照我们设计的特定逻辑返回 Promise 实例。

我们就可以升级以前所有的异步回调函数了。

Promise 介绍

因为种种历史原因,JS 当中有大量异步函数。这些异步函数,大多要依赖回调进行处理(这里我觉得把事件侦听算作回调也是合理的),但是回调嵌套层次一多,就会形成所谓的“回调陷阱”,让开发者苦不堪言。

为了解决这个问题,开发社区经过摸索,总结出来一套名为 Promise/A+ 的解决方案。大体上来说,这套方案通过使用 “Promise 回调实例”包裹原先的回调函数,可以将原先复杂的嵌套展开、铺平,从而降低开发和维护的难度和成本。

ES(ES6)里包含了 Promise 标准,如今已经在大部分运行时里实装,我们可以放心大胆的使用它。而且,由于 Promise 不需要新的语法元素,所以即使在不支持原生 Promise 的环境里也可以使用类库,比如 Q 或者 Bluebird ,甚至 jQuery 。

在小程序里也有效哟。

ES 增加了 Await/Async 语法,但请注意, Await 后面必须跟 Promise 实例才能实现异步。所以,大家还是把 Promise 的概念学好吧!

标签: nodejs+ts

本文链接地址:https://www.jiuchutong.com/biancheng/382098.html 转载请保留说明!

上一篇:Nodejs回调加超时限制两种实现方法(node 回调函数)

下一篇:详解nodejs模板引擎制作(nodejs function)

  • 个人车辆无偿给公司使用
  • 递延收益与递延所得税负债的区别
  • 企业所得税人数包括劳务派遣吗
  • 财税通财务软件怎么下载
  • 生产型企业直接进口产品是否可直接出口
  • 已认证未抵扣的进项怎么填写
  • 工程资金占用计算利率是多少
  • 运保佣是什么
  • 计提坏账的递延税收
  • 简易分包抵减的增值税应纳税额怎么做会计分录?
  • 非货币交易例子
  • 固定资产的发票
  • 钉钉报销费用明细怎么写
  • 行政机关作出下列行为属于行政复议的范围
  • 工程改造合同印花税
  • 总公司业务分公司开票是虚开吗
  • 海关完税凭证抵扣税率
  • 公益捐款
  • 废旧物品回收是做什么的
  • 公司账户转账给个人账户有限额吗?
  • 如何处理填写错题的问题
  • 购买的技术服务费需要摊销吗
  • 计提减值的固定资产处置
  • 解除劳动关系补偿标准
  • 公司自有房屋出租 营业范围
  • 汇算清缴时所得税费用
  • 询证函是什么文书
  • 酒店安装监控费用谁出
  • php存储过程是什么
  • php面向对象详解
  • 工程施工科目借贷方向
  • 自产产品用于业务招待 如何申报企业所得税
  • pavprsrv.exe - pavprsrv是什么进程 有什么用
  • 金融企业计提资产减值准备是根据会计核算的
  • 场地租赁费需要计提吗
  • 精灵烟囱的形态判断
  • vue角色管理
  • #cookie jar
  • java 桥接模式
  • spring5和6差别大吗
  • 借款利息记入短期借款吗
  • 企业所得税本期已预交怎么算
  • 没有什么盈利的公司应该进吗
  • 库存亏损要缴纳增值税吗
  • 企业能否自行填开发票入账
  • 织梦联动筛选教程
  • 预付卡发票如何开
  • 当月纳税申报期是什么意思
  • 航天金税服务费怎么交
  • 资产管理业务是表外业务吗
  • 机构信用代码证在哪里办理
  • 会计手工做账的目的
  • 递延所得税资产和递延所得税负债
  • 垫付的资金
  • 购入固定资产的增值税计入成本吗
  • 企业存货借款利息怎么算
  • 购进生产设备的进项税额抵扣政策
  • 分配利润给股东公司需要交税吗
  • win10安装sqlserver2016出错
  • win2003r2企业版密钥
  • Linux操作系统软链接和硬链接的联系与区别
  • nfs网络安装
  • 如何把网址设为常用网址
  • windows识别码
  • 如何配置无线网络路由器
  • jquery实现简洁文件上传表单样式
  • string获取文件名
  • 学习计划
  • javascript中的判断语句
  • 实现 java
  • linux .tar文件
  • 你应该知道的2000个地理常识
  • nodejs+ts
  • Javascript valueOf 使用方法
  • 2、BluetoothChat之扫描设备DeviceListActivity.java
  • jQuery ajaxSubmit 实现ajax提交表单局部刷新
  • 南京税务局几点上班几点下班
  • 神州浩天财务软件
  • 试验费属于什么税收编码
  • 增值税有哪些税目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设