получение значений из разрешенного объекта Promise - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь получить значения из массива обещаний.

  async function retrieveIssues() {

  let rawdata = fs.readFileSync(argv.i);
  let issues = JSON.parse(rawdata);

  const issuesArray = issues.Issues;

  const promises = issuesArray.map(issue => getIssueInfo(issue));

  await Promise.all(promises);


  // promises is now array of current issue information
  console.log(promises)
  console.log(promises[0])


}

Итак, у меня есть массив объектов Promise, которые выглядят так:

    Promise {
  { title: 'Work out why we can\'t run the GAX tests with parallelism',
  body: 'We\'ve had to disable parallelism in GAX tests, as otherwise the FakeScheduler tests hang, although only on Travis... but it\'s not clear why. At some point, we should investigate that...\n',
  labels: [ [Object] ] } }

Так, как я могу получить доступ к названию, например?

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Помогает понять, как ведут себя обещания, знать, что делать с Promise.all.

Без async/await ваш код будет выглядеть следующим образом:

Promise.all(promises).then(results => {
  // results is now an array of current issue information
  console.log(results)
  console.log(results[0])
  console.log(results[0].title)
})

Когда вы используете await, возвращается значение, которое обычно получается внутри then, поэтому вам нужно сохранить его в переменной и использовать его.Таким образом вы получите:

let results = await Promises.all(promises)
// results is now an array of current issue information
console.log(results)
console.log(results[0])
console.log(results[0].title)
0 голосов
/ 11 сентября 2018

Вы можете получить доступ к заголовку как -

let promise = await Promise.all(promises);    
console.log(promise[0].title); 
0 голосов
/ 11 сентября 2018

Вы по-прежнему используете переменную promises, чтобы попытаться получить доступ к значениям, когда вместо этого хотите использовать результат ожидаемого вызова Promise.all. EG:

const results = await Promise.all(promises);


// promises is now array of current issue information
console.log(results);
console.log(results[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...