首页 > 解决方案 > 在另一个函数中返回询问者提示的答案

问题描述

我有一个函数,我想用用户选择的类对象做一些事情。我在想,我给他们一些选项,然后在他们选择它之后,我使用字符串来识别对象数组中的类对象,如下所示:

    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在我的查询器函数中粘贴 a ,但它返回未定义,所以我想,也许我可以await在 my 之外粘贴 a console.log,但这也没有得到回报。

所以我尝试使用这个答案when中的方法,但后来我得到了一个错误,“什么时候是一个意外的标识符”。我到底应该把方法放在哪里,还是应该完全使用其他方法?when

标签: javascriptnode.jsinquirerinquirerjs

解决方案


我想到了!我能够通过颠倒我的策略来做到这一点。我没有调用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);
  })

}

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


推荐阅读