Возврат не ожидает Javascript - PullRequest
       19

Возврат не ожидает Javascript

0 голосов
/ 29 апреля 2018
const fs = require('fs')
const util = require('util')

const readFile = util.promisify(fs.readFile)

const buildMap = async () => {
  let map = await readFile(process.argv[2], { encoding: 'utf-8' })
  console.log(map) // Returns the right result
  return map // Returns `Promise { <pending> }`
}

const game = buildMap()
console.log(game)

Почему в приведенном выше коде, в частности,

let map = await readFile(process.argv[2], { encoding: 'utf-8' })
console.log(map) // Returns the right result
return map // Returns Promise { <pending> }

что возврат возвращает обещание в ожидании, даже если строка над ним имеет правильный результат? И как я могу изменить это так, чтобы он сделал?

Заранее спасибо и извините за плохо написанный вопрос ... (Написание хорошо сформулированных ТАК вопросов не является моей сильной стороной)

1 Ответ

0 голосов
/ 29 апреля 2018

async функции всегда возвращают обещания (даже если их операции полностью синхронны). Вы должны позвонить .then о результате вызова.

buildMap().then((game) => {
  // do stuff with game
  console.log(game);
});

Обратите внимание, что вы не можете просто потреблять его с чем-то вроде

const game = await buildMap();

потому что вы не можете await на верхнем уровне - вы можете только await внутри асинхронной функции.

...