Задать вопрос
  • Обработка кол-ва ошибок, как лучше реализовать?

    @Oureap
    async function increaseSalary() {	
    	//кол-во успешных запросов
    	let countInquiry = 0;
    	//бюджет
    	let newBudget = 0;
    
    	//список сотрудников
    	const employeesList = await api.getEmployees();	
    	//средняя ЗП
    	const averageSalaries = 
            Math.floor((employeesList.reduce((acc, el) => acc += el.salary, 0)) / employeesList.length);	
    
    	try {
    		//перебираем сотрудников из списка
    		for (employee of employeesList) {
    			//повышенная ЗП
    			let changedSalary = 0;
    			
    			const sendRequestSalary = async () => {
    				try {
    					//запрос на увеличение ЗП 
    					await api.setEmployeeSalary(employee.id, changedSalary);
    					//текст для сотрудника
    					/* const changedEmployeeList = api.getEmployees();
    					console.log(changedEmployeeList) */
    					let text = 
                                            `Hello, ${employee.name}! Congratulations, your new salary is ${changedSalary}!`;
    					//отправка сообщения сотруднику
    					await api.notifyEmployee(employee.id, text);
    					//фиксация успешных запросов
    					countInquiry++;
    					//формирование бюджета
    					newBudget += changedSalary;
    				} catch (error) {
    					//сообщение администратору об ошибке
    					await api.notifyAdmin(error);
    				}
    			}
    			//расчет повышения ЗП, согласно условиям
    			if (employee.salary > averageSalaries) {
    				changedSalary = parseInt(employee.salary * 1.1);
    				console.log(changedSalary)
    				await sendRequestSalary();
    			} else if (employee.salary < averageSalaries) {
    				changedSalary = parseInt(employee.salary * 1.2);
    				await sendRequestSalary();
    			} 
    		}
    
    	} catch (error) {
    		//сообщение администратору об ошибке
    		await api.notifyAdmin(error);
    
    	} finally {
    		//отправка бюджета в бухгалтерию
    		await api.sendBudgetToAccounting(newBudget);		
    	}
    
    	//возвращаем кол-во успешных операций увеличения ЗП
    	return countInquiry;
    }
    Ответ написан
    Комментировать