【原文】Node.js v 7 Nightlyバージョンのasync/await小実践
2875 ワード
初心者からの海外技術ブログRisingStockのもう一つのNode.js関連の技術記事です.原文はこちらをご覧ください.
本文
Node.js v 7のasync/await実践
数ヶ月前、JavaScriptエンジンV 8はasync/awaitの特性に加入しました.Node.jsもV 8バージョンを更新し、最新のNightlyバージョンはついにasync/await特性のV 8エンジンに加入しました.
注意:現在のasync/awaitの特性は非定常バージョンのNightlyにしかありません.生産環境には使わないことを提案します.
async/awaitとは何ですか?
まず、非同期プログラムを
上記の例をasync/awaitで実現すれば、次のようになります.https://ponyfoo.com/articles/... https://tc39.github.io/ecmasc... 変換器を使わない場合は、async/awaitを使います.
1.Node.js v 7をインストールする
まず、最新のNightly buildsを取得します.
nvmを使用すれば、以下のようにインストールできます.
まず簡単なJavaScriptファイルを作成し、
Kooa v 2を例にとると、Kooaは中間部品形式の非同期関数をサポートしている.これまでは、まだトランシーバーでしか実現できませんでした.
中間部品で簡単に非同期関数に入ることができます.
Node.js v 8は、次の安定バージョンで、async/await機能をサポートします.2017年4月に発行されます.その前に、Node.js v 7バージョンでコードを試してみてください.
THE END
本文
Node.js v 7のasync/await実践
数ヶ月前、JavaScriptエンジンV 8はasync/awaitの特性に加入しました.Node.jsもV 8バージョンを更新し、最新のNightlyバージョンはついにasync/await特性のV 8エンジンに加入しました.
注意:現在のasync/awaitの特性は非定常バージョンのNightlyにしかありません.生産環境には使わないことを提案します.
async/awaitとは何ですか?
まず、非同期プログラムを
Promise
でどうやって作るかを見てみます.以下の小さな例は、Fetch
APIおよび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に関する情報をもっと知りたいなら、次の二つの文章を紹介します.1.Node.js v 7をインストールする
まず、最新の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でウェブサーバを作成するKooa v 2を例にとると、Kooaは中間部品形式の非同期関数をサポートしている.これまでは、まだトランシーバーでしか実現できませんでした.
中間部品で簡単に非同期関数に入ることができます.
// 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)
このように、Kooaでサーバーを作成して、それを実行します.node --harmony-async-await app.js
いつからasync/awaitが使えますか?Node.js v 8は、次の安定バージョンで、async/await機能をサポートします.2017年4月に発行されます.その前に、Node.js v 7バージョンでコードを試してみてください.
THE END