На данный вопрос уже ответили:
Хочу понять, как решить данную проблему. Суть в том, чтобы проверять дни по порядку на выходной-рабочий, пока в массиве не будет 3 рабочих дня, и возвращать последний. Проект на Angularjs 1.5, возможно, нужно писать как-то по-другому, используя $q, но я в этом пока новичок, поэтому буду благодарна за подсказку оптимального решения. Заранее большое спасибо
function getFinePlanDateTo() {
let from = new Date(), workingDates = []
let lastDay;
getResult(from, workingDates, lastDay).then((resp)=>{
console.log("resp", resp) // здесь не та дата
});
}
function getResult (from, workingDates, lastDay) {
from = new Date(from.setDate(from.getDate() + 1));
return isWorkingDay(from).then(function (result) {
if (result && result.working) {
workingDates.push(from);
lastDay = workingDates[workingDates.length - 1];
}
if (workingDates.length < 3) {
getResult(from, workingDates, lastDay);
} else {
console.log(lastDay) // здесь дата верная, ее надо вернуть
return lastDay
}
return lastDay
})
}
function isWorkingDay(day) { //сервис, который возвращает объект типа {working:true/false}
return service.workingDay(day).then(function (result) {
return result
})
}
Чтобы получить последний рабочий день по-идее надо переписать метод так
function getResult (day) {
return isWorkingDay(day).then(function (result) {
if (result && !result.working) {
return new Date(day.setDate(day.getDate() - 1))
} else {
let newDay = new Date(day.setDate(day.getDate() + 1));
return getResult(newDay);
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей