使用express进行长时间轮询嘲弄

时间:2019-04-17 09:50:43

标签: javascript rest express

我的前端需要此数据来显示列表-名称和分数。

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

前端会每秒调用一次,因为假设后端正在执行计算,那么得分值将在很晚之后出现。

因此前端将每秒调用一次终结点,直到返回所有分数为止。

以下是前端应如何从后端获取数据的步骤。

  1. 首先拨打电话
  

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

  1. 呈现名称
  2. 显示价格加载

  3. 触发第二通电话

  

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

  1. 完成,加载被取消

我该如何在express中模拟端点,以便可以在前端获得此结果?我的问题是快速端点aka函数是非持久性的,很难伪造将返回分数的调用。

1 个答案:

答案 0 :(得分:0)

如果尚未设置计时器,则可以启动一个计时器,该计时器可以填写分数:

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