При выполнении вызова setInterval я получаю эту проблему.[Нарушение] Обработчик 'setInterval' занял мс. Насколько я понимаю, эта проблема возникает, когда мы пишем код внутри setInterval, выполнение которого занимает больше времени.Моя проблема заключается в том, как решить эту проблему, если нет способа изменить код, выполняющийся внутри setInterval.
let cardInterval = setInterval(() => {
if (self.filterObject != undefined) {
self.getFilteredListOfTurbine(self.globalFilterService.getUpdatedTurbineListWithOperatingMode(self.listOfTurbine)).then((response) => {
self.cardData.turbines = response;
self.cardData.recalculate();
observable.next(self.cardData);
})
} else {
self.cardData.turbines = self.globalFilterService.getUpdatedTurbineListWithOperatingMode(self.listOfTurbine);
self.cardData.recalculate();
observable.next(self.cardData);
}
}, 1000);
Приведенный выше код работает нормально, когда self.filterObject не определен, но когда его нет, это необходимо сделать.дополнительная фильтрация, которая находится в self.getFilteredListOfTurbine.
getFilteredListOfTurbine(listOfTurbine): Promise<Turbine[]> {
return new Promise((resolve) => {
if (this.filterObject == undefined) {
return listOfTurbine;
}
let self = this;
let listOfFilteredTurbine = new Array<Turbine>();
listOfTurbine.forEach((turbine, i) => {
if (self.filterObject.wf.includes(turbine.wfoid) && self.filterObject.tu.includes(turbine.turbineserialnumber) && self.filterObject.tt.includes(turbine.hwtype) && self.filterObject.om.includes(turbine.turbineoperatingmode)) {
if (self.filterObject.ro && self.filterObject.ro.length > 0) {
let addTurbine = this.applyRulesOnTurbine(turbine, self.getRuleObject());
if (addTurbine) {
listOfFilteredTurbine.push(turbine);
}
}
else {
listOfFilteredTurbine.push(turbine);
}
}
if (i == listOfTurbine.length - 1) {
return resolve(listOfFilteredTurbine);
}
})
})
}
Я не чувствую, что мог бы изменить логику фильтрации здесь.Пожалуйста, помогите мне исправить эту проблему.
Спасибо