当前位置: 首页 > news >正文

Node 7.6默认支持Async/Await

Node.js 7.6正式默认支持async/await功能,并能够使低内存设备获得更出色的性能。

\\

Node 7.6对async/await的支持来自于将V8(Chromium JavaScript引擎)升级至版本5.5。这意味着async/await不再是实验性功能,使用它时无需指定--harmony参数,此参数用来开启那些几乎已完成但被V8团队认为还不稳定的功能。

\\

Async/await的主要益处是可以避免回调地狱(callback hell)问题,该问题源于把一系列异步操作嵌套于它们各自的回调函数里。

\\

下面代码演示了如何使用回调函数来处理两个异步操作:

\\
\function asyncOperation(callback) {\  asyncStep1(function(response1) {\    asyncStep2(response1, function(response2) {\        callback(...);\    });\  });\}\
\\

使用async/await可以简化代码,使代码看起来就像同步操作:

\\
\async function asyncOperation(callback) {\    const response = await asyncStep1();\    return await asyncStep2(response);\}\
\\

解决回调地狱的另一种方法是使用Promises,它是JavaScript里存在很久的一个特性。使用Promises,上面的例子则变成:

\\
\function asyncOperation() {\  return asyncStep1(...)\    .then(asyncStep2(...));\}\
\\

但是在一些更为复杂的场景中,Promises这种方法会变得很笨重。

\\

V8 5.5还对堆大小和区域使用(zone usage)做出了若干改进。与V8 5.3相比,这些改进能使低内存设备的内存占用量降低多达35%。

\\

Node 7.6还有另一些值得注意的改进:

\\
\
  • 基于新调试器协议node --inspect,重写旧CLI调试器node debug。在未来V8版本中,将只支持node --inspect。 \\
  • 支持file:相关协议已经加入fs,因此你可以写成fs.readFile(URL('file:///C:/path/to/file');, (err, data) =\u0026gt; {});\
\\

除了V8 5.5外,Node 7.6还包括了其它一些已经更新的依赖,比如跨平台的异步I/O库libuv 1.11和zlib 1.2.11。

\\

查看英文原文:Node 7.6 Brings Default Async/Await Support

\\

感谢薛命灯对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们。

相关文章:

  • 基础数据结构-二叉树-拓展:基于数组存储的构建
  • 设计模式(十五):Iterator迭代器模式 -- 行为型模式
  • mysql搭建主从数据库及测试(ubuntu)
  • python 输入 和文件操作
  • Jupyter Notebook远程服务器配置[转]
  • 使用Nginx负载均衡搭建高性能.NETweb应用程序(转)
  • MySQL索引的使用方式和缺点
  • PHP在Windows IIS上传的图片无法访问的解决方法
  • LINUX系统安装MYSQL命令
  • Jmeter简单应用7
  • 【转】UNREFERENCED_PARAMETER的作用
  • Bootstrap框架下实现图片切换
  • SpringBoot学习之路:02.第一个程序Hello World及项目结构介绍
  • samba部署和优化
  • OSChina 周日乱弹 ——花季少女突然离开,昨夜他们做了什么?
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • CentOS从零开始部署Nodejs项目
  • classpath对获取配置文件的影响
  • Django 博客开发教程 16 - 统计文章阅读量
  • gitlab-ci配置详解(一)
  • golang中接口赋值与方法集
  • IndexedDB
  • k个最大的数及变种小结
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Nodejs和JavaWeb协助开发
  • Node项目之评分系统(二)- 数据库设计
  • Redis在Web项目中的应用与实践
  • Sass Day-01
  • ViewService——一种保证客户端与服务端同步的方法
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 近期前端发展计划
  • 经典排序算法及其 Java 实现
  • 使用putty远程连接linux
  • 通信类
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 最近的计划
  • zabbix3.2监控linux磁盘IO
  • 带你开发类似Pokemon Go的AR游戏
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​TypeScript都不会用,也敢说会前端?
  • #前后端分离# 头条发布系统
  • (02)vite环境变量配置
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .htaccess配置重写url引擎
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET中的Exception处理(C#)
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • @31省区市高考时间表来了,祝考试成功