Asynchronusly означает, что запрос выполняется в фоновом режиме и вызывает вашу функцию, когда она получила ответ. Этот метод лучше всего, если вы хотите получить результат, но разрешите использовать приложение в запросе. Если вы хотите получить прямой ответ, взгляните на запрос синхронизации. этот запрос приостанавливает выполнение сценария до тех пор, пока не получит ответ, и пользователь не сможет ничего сделать, пока не будет получен ответ. Вы можете переключить его через:
async: false,
Так например:
$.ajax({
url: "myurl",
async: false,
...
})
Итак, у вас есть два возможных условия, которые вы хотите исправить:
Попробуйте
foo.forEach((fooPoint) => {
fooPoint.hour -= this.state.timeZoneOffset;
fooPoint.hour =
fooPoint.hour < 0
? fooPoint.hour + 24
: foorPoint.hour >= 24
? fooPoint.hour - 24
: fooPoint.hour;
});
Убрать вычитание только потому, что я ленивый и не хочу повторять это пять раз.
Важнейшей частью здесь является проверка обеих возможностей.
Вы также можете найти его более читабельным как if
высказывания.
foo.forEach((fooPoint) => {
fooPoint.hour -= this.state.timeZoneOffset;
if (fooPoint.hour < 0) {
fooPoint.hour += 24;
} else if (fooPoint.hour >= 24) {
fooPoint.hour -= 24;
}
});
Эти два функционально одинаковы, но многие найдут, что легче следовать.