длинный опрос издевательства с использованием экспресс - PullRequest
0 голосов
/ 17 апреля 2019

Моему веб-интерфейсу нужны эти данные для отображения списка - имени и оценки.

[{id: 1, name: 'james', score: null}, {id: 2, name: 'john', score: null}]

Веб-интерфейс будет вызывать каждую секунду, поскольку значение оценки появится намного позже, при условии, что бэкэнд выполняет вычисления.

, поэтому веб-интерфейс будет вызывать конечную точку каждую секунду до тех пор, пока не будут возвращены все результаты.

Ниже приведены шаги, с помощью которых веб-интерфейс должен получать данные из бэкэнда.

  1. выполнить первый вызов

[{id: 1, имя: 'james', оценка: null}, {id: 2, name: 'john', оценка: null}]

отображать имена

отображать загрузку цен

пожарный вызов

[{id: 1, имя: 'james', оценка: 1.2}, {id: 2, имя: 'john', оценка: 2.2}]

готово, загрузка прекращена

Как мне высказать конечную точку в экспрессе, чтобы я мог получить этот результат во внешнем интерфейсе?моя проблема в том, что экспресс-функция конечной точки, иначе функция не постоянна, трудно подделать, при каком вызове будет возвращен счет.

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете запустить таймер, если таймер еще не установлен, который когда-нибудь заполняет счет:

 const data = [/*...*/];

 let loading;
 function load() {
   for(const el of data)
     el.score = Math.random();
 }

 app.get("/api/", (req, res) => {
   if(!loading) loading = setTimeout(load, 5000);

   res.json({ data });
 });
...