我想模拟一个服务器端点,在该端点上,当用户击中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 });
});
答案 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()函数需要时间,那么您可能需要考虑将其作为承诺。