繁体   English   中英

如何一次为 JavaScript 使用多个查询器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM