вернуть другой ответ без постоянных данных? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу смоделировать конечную точку сервера, где, когда пользователь нажимает на API n раз, ответ возвращает значение дополнительных свойств.

Например, конечная точка сначала возвращает это значение

[{id: 1, price:null}]

затем при втором вызове верните это [{id: 1, price: 10}]

Я попробовал эту попытку setTimeout, не имеет смысла, потому что фронтенд (клиент) попадает в конечную точку каждые секунды, и функция снова будет выполняться сверху вниз.

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 });
 });

Ответы [ 2 ]

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

Это ты хотел?Я не понимаю, почему вы использовали переменную 'loading'.

const data = [{ id: 1, price: null }];

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

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

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

Если функция load () требует времени, вам, возможно, придется подумать о том, чтобы переместить это как обещание.

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

функция load называется асинхронной, но не ответом. Поместите res.json() в функцию обратного вызова setTimeout():

setTimeout(() => {
  load();
  res.json(data);
}, 5000);

ПРИМЕЧАНИЕ: отправить data не {data}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...