#javascript #node.js #express #settimeout
#javascript #node.js #экспресс #settimeout
Вопрос:
Добрый день всем! Я использую другой подход к моему последнему вопросу. Я пытаюсь реализовать анимацию страницы загрузки при посещении ‘/’ в течение 3 секунд, а затем перенаправить на домашнюю страницу. Я получаю сообщение об ошибке, что я не могу установить заголовки после отправки клиенту, и я просто не уверен, как это обойти. Я заставил перенаправление работать, я просто не знаю, как получить начальный рендеринг страницы анимации.
var express = require('express');
var router = express.Router();
var path = require('path');
/* GET home page. */
router.get('*', function(req, res, next) {
res.render('index-loading-animation')
setTimeout(function () {
res.redirect('/')
}, 3000);
})
module.exports = router;
Ответ №1:
HTTP просто так не работает.
Клиент отправляет запрос на сервер. Сервер выдает ответ.
Он может сказать: «Вот HTML-документ с некоторой анимацией в нем», или он может сказать: «То, что вы просили, можно найти по этому URL вместо этого».
Он не может сказать оба, потому что два утверждения противоречат друг другу.
Если вы хотите перейти к новому URL-адресу после завершения анимации, сделайте это с помощью клиентского кода.
Комментарии:
1. Я нашел фрагмент кода, который сработал. При рендеринге домашней страницы возникает небольшая ошибка, но она работает. Я не уверен, что означает res.write(html n), вы знаете? /* ПОЛУЧИТЬ домашнюю страницу. / router.get(» , function(req, res, next) { res.render(‘index-loading-animation’, (ошибка, html) => { res.write(html ‘n’); setTimeout(() => { res.render(‘index’, (ошибка, html)=> { res.end(html ‘n’); }) },5000); }); })