返回不同的响应而没有持久数据?

时间:2019-04-18 07:45:28

标签: javascript express ecmascript-6

我想模拟一个服务器端点,在该端点上,当用户击中api两次时,响应将返回额外的属性值。

例如端点首先返回它

[{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 :(得分:0)

load函数被称为异步函数,而不是响应。将res.json()放在setTimeout()的回调函数中:

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

注意:发送data而不是{data}

答案 1 :(得分:0)

这是您想要的吗?我不明白您为什么要使用“加载”变量。

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()函数需要时间,那么您可能需要考虑将其作为承诺。