Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Работа промисов JS

Dlazder Мудрец (16914), на голосовании 1 год назад
Никак могу отловить ошибку.
Есть такой код который удаляет элемент из списка и отправляет на сервер обновленный JSON.
 let order__items = document.querySelectorAll('.order__item');
removeBtns.forEach((e, i) => {
e.addEventListener('click', () => {
order__items[i].remove();

fetch('data.json')
.then(res => res.json())
.then(res => res.filter((_, index) => index !== i))
.then(res => fetch('/data', {method: 'POST', body: JSON.stringify(res)}))
.then(location.reload())
.catch(err => console.error(err))
})
})
Дело в том что иногда элемент не удаляется. Я вот и думаю, может дело в том что я перезагружаю страницу еще до того как будет сформирован новый json файл и отправлен на сервер и обработан, или происходит что то подобное, других догадок у меня нет. Я знаю что следующий промис выполняется только при выполнении предыдущего, но может быть дело как раз таки в том что сервер именно не успевает обработать? Подскажите в чем может быть проблема?
Голосование за лучший ответ
Павел Просветленный (25620) 1 год назад
 location.reload() 
Выполнится до того как выполнится промис. .then() принимает функцию а ты передаёшь ей результат метода reload(), в следствии чего страница перезагружается ещё до выполнения fetch.
Правильно так:
 () => location.reload() 
DlazderМудрец (16914) 1 год назад
Спасибо!!! Вроде стало нормально работать, одним багом меньше)
Похожие вопросы