我正在構建一個員工跟蹤應用程式。我希望我的應用程式能夠正常作業,以便在完成各種串列選擇的每個功能后,該應用程式將再次提示您使用選項串列。我可以想到幾種方法來實作這一點,但我希望更有經驗的開發人員可以推薦哪種方法最好。謝謝!
- 將 switch 陳述句中的所有函式都變成 Promise,然后創建一個可以呼叫自身的 Promise 鏈
- 嘗試使用 async-await 而不是 Promise 鏈???
- 匯出 prompt() 函式并在每個 lib 檔案中匯入它和所有其他相應的函式
這是應用程式的入口點
const db = require('./db/connection');
const inquirer = require('inquirer');
// response handling
const { viewDepartments, viewRoles, viewEmployees, viewByManager, viewByDepartment } = require('./lib/viewFuncs');
const { addDepartment, addRole, addEmployee } = require('./lib/addFuncs');
const { updateRole, updateManager } = require('./lib/updateFuncs');
const { deleteDepartment, deleteRole, deleteEmployee } = require('./lib/deleteFuncs');
function prompt() {
return inquirer.prompt({
name: 'choice',
type: 'list',
message: 'What would you like to do?',
choices: [
'View all departments',
'View all roles',
'View all employees',
'View employees by manager',
'View employees by department',
'Add a department',
'Add a role',
'Add an employee',
'Update an employee role',
'Update employee manager',
'Delete a department',
'Delete a role',
'Delete an employee',
'EXIT'
]
}).then(answer => {
switch (answer.choice) {
case 'View all departments':
viewDepartments();
break;
case 'View all roles':
viewRoles();
break;
case 'View all employees':
viewEmployees();
break;
case 'View employees by manager':
viewByManager();
break;
case 'View employees by department':
viewByDepartment();
break;
case 'Add a department':
addDepartment();
break;
case 'Add a role':
addRole();
break;
case 'Add an employee':
addEmployee();
break;
case 'Update an employee role':
updateRole();
break;
case 'Update an employee manager':
updateManager();
break;
case 'Delete a department':
deleteDepartment();
break;
case 'Delete a role':
deleteRole();
break;
case 'Delete an employee':
deleteEmployee();
break;
case 'EXIT':
exitApp();
break;
default:
break;
}
})
};
// connect to database
db.connect(err => {
if (err) throw err;
console.log('Welcome to the employee-tracker!');
// start the app
prompt();
});
// exit the app
function exitApp() {
console.log('Thank you for using the employee-tracker!')
db.end();
};
uj5u.com熱心網友回復:
我認為 switch 陳述句是矯枉過正的。如果您創建一個物件,其中鍵是選項,函式是值,那么它是 1:1 查找并且假設性能更高。
此外,洗掉 then 陳述句,因為我們在這里撰寫現代代碼。也祝賀實習。
const choiceObj = {
'View all departments':viewDepartments(),
'View all roles':viewAllRoles(),
...etc etc
}
const prompt = async () => {
const answer = await inquirer.prompt({
name: 'choice',
type: 'list',
message: 'What would you like to do?',
choices: choiceObj.keys() // returns an array of the object keys
})
if (answer) {
choiceObj[answer];
alert('answer submitted'); // UX
setTimeout(function(){
prompt(); // recursion after 2s
}, 2000);
}
};
我可以在評論部分回答任何問題。謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/429549.html
