【译文】Node.js v7 Nightly版本的async/await小实践

来自新手向外洋手艺博客RisingStack的又一篇Node.js相干手艺文章,原文请看此

正文

Node.js v7的async/await实践

几个月前,JavaScript引擎V8加入了async/await特征。Node.js也随之更新它的V8版本,最新的Nightly版本终究加入了async/await特征的V8引擎。

注重:如今async/await特征只在非稳固版本的Nightly中才有。临时发起不要用于临盆环境。

什么是async/await?

起首,我们来看看怎样用Promise来做异步编程。下面的小例子展现了怎样经由过程FetchAPI和Promise猎取数据:

function getTrace () {  
  return fetch('https://trace.risingstack.com', {
    method: 'get'
  })
}

getTrace()  
  .then()
  .catch()

经由过程运用async/await,可在Promise中完成await功用。意义是它能以非壅塞的体式格局暂定代码的实行,以守候上一个效果返回。假如这个promise终究的状况不是resolved而是rejected,它会将rejected的值抛出非常,能够用try/catch块捕捉。

假如把上面的例子用async/await完成,会是下面如许:

async function getTrace () {  
  let pageContent
  try {
    pageContent = await fetch('https://trace.risingstack.com', {
      method: 'get'
    })
  } catch (ex) {
    console.error(ex)
  }

  return pageContent
}

getTrace()  
  .then()

要相识更多关于async/await的信息,引荐下面两篇文章:

在不运用转译器的情况下,运用async/await

1. 装置Node.js v7

起首,要猎取最新的Nightly builds

假如你运用nvm的话,能够运用下面的体式格局装置:

NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/nightly  
nvm install 7  
nvm use 7  
2. 用async/await运转个文件尝尝

先来建立一个简朴的JavaScript文件,用setTimeout完成一个函数的耽误实行,而且用async/await来挪用。

// app.js
const timeout = function (delay) {  
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve()
    }, delay)
  })
}

async function timer () {  
  console.log('timer started')
  await Promise.resolve(timeout(100));
  console.log('timer finished')
}

timer()  

文件建立好以后,试下运转它:

node app.js 

不过如许是不可的,由于async/await如今还需要特别的体式格局实行,以下所示:

node --harmony-async-await app.js  
3. 用async/await建立web服务器

以Koa v2为例,Koa如今支撑中间件情势的异步函数。在此之前,还它只能经由过程转译器来完成。

你能够以中间件情势简朴地传入一个异步函数:

// app.js
const Koa = require('koa')  
const app = new Koa()

app.use(async (ctx, next) => {  
  const start = new Date()
  await next()
  const ms = new Date() - start
  console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
})

app.use(ctx => {  
  ctx.body = 'Hello Koa'
})

app.listen(3000) 

像如许,就用Koa建立了一个服务器,接下来运转它:

node --harmony-async-await app.js

什么时候能够开始运用async/await

Node.js v8,下一个稳固版本,且会支撑async/await功用将于2017年4月刊行。在那之前,你都能够在Node.js v7版本上实验你的代码~

THE END

    原文作者:uglybachelor
    原文地址: https://segmentfault.com/a/1190000007813709
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞