位置: 编程技术 - 正文

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)

  • 小规模纳税人工程款税率是多少
  • 小规模升一般纳税人怎么操作
  • 已认证红冲需要退回发票吗
  • 公司租用个人房屋如何记账
  • 大病医疗保险能税前扣除吗
  • 委托开发费用免所得税和增值税
  • 货币形式投资的特点是
  • 公司成本可以抵扣税吗
  • 应交税金成负数
  • 企业公车私用如何处理
  • 什么是个体工商户业主
  • 开公司怎么报账
  • 以前年度亏损可以在季报弥补吗
  • 合伙企业购买股票产生的收益需要缴纳税款吗
  • 申报增值税附表二代不出数据
  • 营改增后税金由哪几项费用组成
  • 建筑业在外地预缴的所得税能退吗
  • 财务报表提供的信息仅对外部的投资者和债权人有用
  • 税控盘第一次使用
  • 盈余公积金什么时候计提
  • 汇票贴息会计分录
  • 其他应收款借方和贷方什么意思
  • 企业所得税季报人数怎么填
  • 跨年度残保金退税怎么算
  • 公司可以对公司罚款吗
  • 小规模普通发票可以抵扣吗
  • 个人借公司款账务处理
  • mac苹果电脑系统
  • coms恢复默认设置
  • 信息化投入包括什么投入和什么投入
  • 报销单据粘贴单样本
  • 劳务报酬必须要和工资申报吗
  • 总公司人员的工资子公司可以发吗
  • 电脑文件删除怎么恢复找回
  • 指定的网络名不再可用 共享打印机00x0000040
  • php单例模式应用场景
  • 异地开办分公司流程
  • ConvNeXt V2学习笔记
  • chrome 浏览器插件开发
  • vue的ref怎么用
  • pytorch基础
  • c语言二级指针详解
  • 织梦怎么添加相关
  • 向个体工商户付款可以转给个体法人吗
  • ibm-db2-admin
  • mysql用中文字段
  • 退物业费如何记帐
  • 异地预缴税款少交了城建税怎么办
  • 主营业务成本是借增贷减吗
  • 固定资产清理是什么账户
  • 建筑劳务公司工作内容
  • 收到银行承兑汇票后,如何取钱
  • 代收收入
  • 无形资产摊销的会计科目怎么录
  • 在什么情况下会冻结微信零钱
  • 银行的结息怎么做会计分录
  • 进项和销项必须一致才能抵扣吗
  • 公司变更地址后需要做哪些事情
  • xp系统玩游戏卡吗
  • linux命令和命令之间用
  • xp无法正常启动怎么办
  • xp专业版激活工具
  • macbookpro鼠标触控板
  • RPDFLchr.exe - RPDFLchr是什么进程 有什么用
  • sdstat.exe - sdstat是什么进程 有什么用
  • windows7怎么给电脑加密码
  • win7更新显卡驱动后黑屏的解决方法
  • 菜单按钮是什么
  • Tutorial 4: Shaders
  • nodejs代码规范
  • cocos2dx官方教程
  • 抽象类和接口的区别简答题
  • LocalBroadcastManager原理和机制
  • jquery实现全选
  • js特殊字符有哪些
  • Python 基于豆瓣电影的可视化
  • 胰腺在人体的哪个部位图解
  • python字符串字符对应个数
  • 教育培训行业的发展前景
  • 出售144平方米以内的房子
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设