Подтвердить что ты не робот

Использование async/wait в node 7.4

Я думал, что async/await поддерживается в node 7.4, однако этот пример не работает:

const Promise = require('bluebird');

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

main();

Результаты в:

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

Как я могу использовать async/wait с node 7.4?

4b9b3361

Ответ 1

Да async-wait поддерживается в Node.js v7, но он заблокирован за флагом harmony. Функции, которые еще не готовы к производству, стоят за этим флагом.

Чтобы использовать async-wait в Node.js v7, просто запустите службу Node с этим флагом -

node --harmony-async-await app.js

Официальная версия async-ожидания запланирована на Node.js v8, который будет запущен в апреле.

Вы можете следить за this, чтобы проверить его статус. В принципе, правильное функционирование асинхронного ожидания зависит от интеграции V8 engine v5.5 в Node.js. В настоящее время Node.js использует V8 v5.4, который решается этим запросом на растяжение.

Обновление 1. Кажется, V8 v5.5 может появиться на Node.js v7. Следуйте this тянуть запрос для более подробной информации.

Обновление 2 - хорошие ребята! Node.js версия 7.6.0 теперь официально поддерживает функции async без использования флага --harmony, поскольку V8 engine 5.5 был успешно перенесен.

Теперь вам нужно использовать флаг --harmony, если ваша версия Node.js находится между 7.0 и 7.5.0 (включительно). Для полного изменения см. здесь.

Ответ 2

Node.js 7.6.0 выпущен несколько часов назад, и они включали v8 5.5. Теперь вы можете использовать async/await без флага.

Ответ 3

Для этого вам понадобится флаг гармонии.

Повторите попытку с помощью node --harmony-async-await myscript.js

Ответ 4

Node версия 7.6 теперь поддерживает async/await из коробки. Если вы еще не пробовали его, вы должны принять его немедленно и никогда не оглядываться назад.

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

    makeRequest()

И используя async/wait:

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

makeRequest()