[英]How can I use more than one inquirer at once for JavaScript
inquirer
.prompt([
{
name: 'name',
message: 'Enter team members name.',
},
{
name: 'role',
type: 'list',
message: 'Enter a team members role',
choices: [
'Engineer',
'Manager',
'Intern'
],
},
{
name: 'id',
message: 'Please enter team members id',
type: 'input'
},
{
name: 'email',
message: 'Please enter team members email'
}
])
.then(function(data){
let moreRole = '';
if (data.role === 'Engineer') {
moreRole = 'Github username.'
}else if(data.role === 'Intern') {
moreRole = 'school name.'
}else {
moreRole = 'office Number.'
}
})
inquirer
.prompt([
{
message: `Enter team members ${moreRole}`,
name: 'moreRole'
},
{
type: 'list',
message: 'Would you like to add another team member?',
choices: [
'Yes',
'No'
],
name: 'anotherMember'
}
])
.then(moredata => {
console.log(moredata)
});
所以第一个查询器有效,但是当我添加第二个并运行它时。 它不能正常工作。 我不能背靠背使用两个查询器吗? 我将如何让它工作。 在控制台中,它只问我第一个问题,然后退出,不让我回答。
包的 API 基于 Promises。 第一个inquirer.prompt
调用会触发第一个prompt,但由于您使用then
方式处理已解析的Promises,它不会等待操作完成,它只是通过第二个inquirer.prompt
调用。
为了绕过这个,你可以将你的代码包装到一个async
函数中,并在每个inquirer.prompt
(或至少除了最后一个)之前添加await
。
应该看起来像这样:
async function callInquirers() {
const inq1 = await inquirer.prompt([...]);
const inq2 = await inquirer.prompt([...]);
// do stuff with results inq1 and inq2
}
如果您想更深入地了解这个问题,请查看文档以了解 Promises、事件循环、异步/等待。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.