Вернуть ответ на запрос запрашивающего внутри другой функции - PullRequest
0 голосов
/ 02 мая 2019

У меня есть функция, в которой я хочу сделать некоторые вещи с объектом класса, выбранным пользователем. Я думал, я представляю их с некоторыми опциями, затем после того, как они выбирают его, я использую строку, чтобы идентифицировать объект класса в массиве объектов, например:

    function askAboutIt() {
  var questions = [{
    type: 'list',
    name: 'theList',
    message: "Message",
    choices: listArray
  }]

  inquirer.prompt(questions).then(answers => {
  var itemInQuestion = (answers['theList']);

   function isPicked(item) { 
    return item.name === itemInQuestion;
}

  var picked = (listArray.find(isPicked)); 
  })

}

По сути, внутри какой-то другой функции я хотел бы иметь возможность вызвать askAboutIt() и вернуть ее picked. Таким образом, я мог бы, например, console.log(askAboutIt()), или, возможно, создать переменную, равную askAboutIt().someOtherPropertyofmyListArrayClass.

Я пытался вставить return в мою функцию inquirer, но она возвращается как неопределенная, поэтому я подумал, может быть, я мог бы вставить await вне моего console.log, но это тоже не получит возврата.

Итак, я попытался использовать метод when из этого ответа , но затем мне было возвращено сообщение об ошибке «когда есть неожиданный идентификатор». Где именно я должен поместить метод when, или я должен использовать что-то еще полностью?

1 Ответ

0 голосов
/ 03 мая 2019

Я понял это!Я смог сделать это, перевернув мою стратегию.Вместо вызова askAboutIt() в другой функции я написал другую функцию parentFunction(answer) и присвоил ей параметр answer.

Затем внутри askAboutIt я вызвал эту функцию, например:

 function askAboutIt() {
  var questions = [{
    type: 'list',
    name: 'theList',
    message: "Message",
    choices: listArray
  }]

  inquirer.prompt(questions).then(answers => {
  var itemInQuestion = (answers['theList']);

   function isPicked(item) { 
    return item.name === itemInQuestion;
}

  var picked = (listArray.find(isPicked)); 
  parentFunction(picked);
  })

}

Таким образом, я могу использовать ответ на этот вопрос в другомфункция.

...