Вы можете пропинговать сервер "x" секунд, чтобы проверить, когда он будет готов.
Сервер
Мы создадим переменную ready
, которая установлена в false
, когдався ваша база данных, API и другие вещи выполняются, делая то, что им нужно, установите для нее значение true
.
Мы также создадим маршрут, такой как /ping
, который будет отвечать значением ready
.
const express = require('express')
const app = express()
let ready = false
// Do database stuff, API stuff, etc.
// Set ready to true when ready
// Temporary / for if someone hits the server before it's finished starting
app.get('/', (req, res) => res.send(`Loading....`))
app.get('/ping', (req, res) => res.json({ready}))
app.listen(3000, () => console.log('Example app listening on port 3000!'))
Клиент
Здесь мы будем пинговать сервер каждые "х" секунд, я устанавливаю его на 0,5 с, как только пинг вернет истину, мы отменяем тайм-аут и запускаем инициализациюкод, который создает страницу.
let timeout
timeout = setInterval(async () => {
let response = await fetch('/ping')
let ready = await response.json()
if (ready.ready) {
clearInterval(timeout)
loadpage()
}
}, 500)