zoukankan      html  css  js  c++  java
  • 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) => {});

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

    转载:http://www.infoq.com/cn/news/2017/03/node-76-async-await?from=timeline&isappinstalled=0

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

  • 相关阅读:
    Elastic Search(一)
    嵌入式jetty
    mybatis中的#{}和${}的区别
    拦截器和过滤器的区别
    springboot对拦截器的支持
    Springboot对filter的使用
    springboot对监听器Listener的使用
    随机数的基本概念
    hashset和treeset区别
    java中常见的api方法记录
  • 原文地址:https://www.cnblogs.com/c-x-a/p/6566823.html
Copyright © 2011-2022 走看看