在另一个函数内返回查询提示的答案

时间:2019-05-02 20:17:13

标签: javascript node.js inquirer inquirerjs

我有一个功能,其中我想对用户选择的类对象进行某些操作。我在想,我给他们提供了一些选项,然后在他们选择它们之后,我使用字符串来标识对象数组中的类对象,如下所示:

    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,但返回的值未定义,所以我想,也许可以将await粘贴在console.log之外,但这不是得到回报。

因此,我尝试使用this answer中的when方法,但随后返回了一个错误,“当是意外的标识符时”。我应该将when方法放在哪里,还是应该完全使用其他方法?

1 个答案:

答案 0 :(得分:0)

我知道了!我能够通过改变策略来做到这一点。我没有在另一个函数中调用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);
  })

}

这样,我可以在另一个函数中使用这个问题的答案。