web-dev-qa-db-ja.com

ノード7.4でasync / awaitを使用する

ノード7.4ではasync/awaitがサポートされていると思いましたが、この例は機能しません。

const Promise = require('bluebird');

async function main(){
  await Promise.delay(1000)
}

main();

結果:

async function main(){
      ^^^^^^^^
SyntaxError: Unexpected token function

ノード7.4でasync/awaitを使用するにはどうすればよいですか?

15
Antoine

はい、async-awaitはNode.js v7でサポートされていますが、harmonyフラグの背後でロックされています。まだ生産準備が整っていない機能は、このフラグの背後にあります。

Node.js v7でasync-awaitを使用するには、このフラグを指定してNode service-

node --harmony-async-await app.js

Async-awaitの公式リリースは、4月にリリースされるNode.js v8に予定されています。

this pull requestに従ってステータスを確認できます。基本的に、async-awaitの正しい機能は、V8エンジンv5.5をNode.jsに統合することに依存しています。現在、Node.jsはこのプルリクエストによって解決されるV8 v5.4を使用しています。

Update 1-V8 v5.5がNode.js v7に来ているようです。詳細については、 this pull requestに従ってください。

Update 2-良いニュースだ! Node.jsバージョン7.6.0は、V8エンジン5.5が正常に移植されたため、--harmonyフラグを使用せずにasync関数を公式にサポートするようになりました。

Node.jsのバージョンが7.0〜7.5.0(両端を含む)の場合にのみ、--harmonyフラグを使用する必要があります。完全な変更ログについては、 here を参照してください。

49
Jyotman Singh

Node.js 7.6.0は数時間前にリリースされ、v8 5.5が含まれていました。これで、フラグなしでasync/awaitを使用できます。

14

これを機能させるには、調和フラグが必要になります。

node --harmony-async-await myscript.jsでもう一度お試しください

2
Tuan Anh Tran

Nodeバージョン7.6は、すぐにasync/awaitをサポートするようになりました。まだ試していない場合は、すぐに採用し、後戻りしないでください。

  const makeRequest = () =>
      getJSON()
        .then(data => {
          console.log(data)
          return "done"
        })

    makeRequest()

そして、async/awaitを使用します。

const makeRequest = async () => {
  console.log(await getJSON())
  return "done"
}

makeRequest()
2
sagar jethi

私は同じ問題を抱えていました、私がしたことは以下のコマンドを使用してasyncawaitをインストールしました

_npm install asyncawait
_

その後、以下のコマンドを使用してawaitとasyncを宣言しました

_const async = require('asyncawait/async');
const await = require('asyncawait/await');
_

その後、必要な場所でこれらを使用しましたが、私のコマンドはasync(my-code) & await(my-code)内にありました。

そして、それは私にとって完璧に機能しました。

0
sankalp nayak