вместо всех этих .then влупить setTimeout по 2 секунды, и пропади оно всё.
Что делает код на фото:
- с фронта приходит пост-запрос.
- он склеивается, потом проверка - что в теле,
- в зависимости от тела, 2 варианта обращения к базе данных: добавление или удаление.
- по окончании операции добавления\удаления нужно получить все записи из БД и отрендерить (отрисовать) страницу PUG с этими данными.
Но дело в том, что новая страница не рисуется - остаётся старая + наверху во вкладке крутится кольцо загрузки.
Что я делаю не так?
воткнул в итоге двухсекундный таймаут. Что характерно - после добавления записи страница обновляется, а после удаления - нет, хотя таймаут на рендер стоит в самом низу и как бы должен делаться в любом случае:
народ, кто шарит в .then и express - хелп, плз. 🆘 Скоро сутки будут, как всё это тупит и не поддаётся доке и логике. Там - я уверен - 2 строки исправить, и всё заработает. https://code-with-me.global.jetbrains.com/W17Nt7LfQm1ABiw3SVjuUQ#p=WS&fp=EFD0F087A61BB710BEE76A19855F6FC95C3DD9DD451558E34CBD1C95562EB1BE
Вот тут вроде норм расписано как работает асинхронность в ноде https://nodejs.dev/learn/the-nodejs-event-loop
Перепишите на async/await, дабы избавиться от nested then. Тогда и код понятнее станет
я поубирал эвейты. Дзен мне более понятен. Один фиг не работает.
Настолько более понятен, что вы не понимаете, в чём проблема
а вы понимаете? подскажите, плз. код выложил: https://onecompiler.com/javascript/3y65t25vx нижний гет прекрасно работает с then
Мож надо res.end() ?
посмотри плз свежий код https://onecompiler.com/javascript/3y664j6xt
Ну ты тут вроде вообще ответ не отправлешь? Что надо сделать?
я уже не знаю, куда тут втыкать res.render уже везде, где логично, тыкал его, и с таймаутами, и без.
Я не помню как render метод работает. Но можешь попробовать res.end сразу же после res.render() вызвать. По описанию, у тебя ответ либо не отправляется, либо не завершается
убери чтение из стрима. просто распарси req.body https://stackoverflow.com/questions/11625519/how-to-access-the-request-body-when-posting-using-node-js-and-express router.post('/', function (req, resp) { const body = req.body; // { type: 'noteText', data: 'bla-bla' if (body.type === 'noteText') ... У тебя возврат из роутера происходит раньше, чем стрим до конца читается, поэтому запрос виснет
переделал, толку нет.
А ошибки в консоли есть?
Обсуждают сегодня