位置: 编程技术 - 正文

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:mcrypt_enc_get_iv_size()的用法_Mcrypt函数
  • 购进原材料款项怎么入账
  • 高温费做账
  • 商誉准则最新修订时间
  • 初雪与最后的秋天的区别
  • laravel sqlserver
  • 所得税季报本月数是指
  • html表白代码动态
  • 其他综合收益的借贷方向
  • 代开的普通发票如何盖章
  • 企业印花税的申报
  • 进项发票是专票吗
  • 留抵税额可以保留几年
  • pycharm cant find main
  • python中的thread
  • vuex数据持久化
  • 结余资金包括结转资金吗?
  • 办公桌椅入固定资产计提折旧几年
  • 记账凭证去根据什么填制
  • 下列项目的进项税额可以从销售税额中抵扣的是
  • 子公司注销时的账务处理
  • 将自产产品用于赠送
  • 视同销售的几种情况都有什么?
  • 小规模企业申报表填写
  • 携程代订住宿发票
  • 利润敏感性分析法可以帮助企业有哪些决策?
  • 税盘减免会计分录
  • 账户设置的三种情况
  • 会计刚开始学什么
  • mysql语句删除表
  • sqlserver完全删除
  • mac安装mysql的两种方法(含配置)
  • win8已共享但别电脑无权限
  • sharedprem.exe - sharedprem是什么进程 有什么作用
  • msng.exe是什么
  • win8新建用户
  • javascript中的类型转换
  • python中list的用法例子
  • android手机传感器应用程序
  • nodejs xhr
  • android toast位置
  • 编写一个python函数is_multiple
  • 爱加密企业版
  • jq 判断元素是否存在
  • 标箭头的手机软件
  • 建筑施工企业研发中心建设
  • 广东省国家税务局电子发票系统,网络设置
  • 重庆税务登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设