如何在 ejs 中每 2 秒更新一次时间元素

Posted

技术标签:

【中文标题】如何在 ejs 中每 2 秒更新一次时间元素【英文标题】:How can i update time element every 2 sec in ejs 【发布时间】:2020-06-27 20:15:32 【问题描述】:

我创建了一个dashboard.js 文件和几个.ejs 文件

这是我的 stats.ejs 文件

<tr>
    <th scope="row" class="list-group-item d-flex justify-content-between align-items-center" data-toggle="tooltip" title="Duration"> Duration </th>
    <td ><i class="fa fa-fw fa-music" aria-hidden="true"></i> <span class="col-5 text-nowrap" id="Duration"><% if(player)  %> <%= time %> <%  else  %>00:00 <% %></span></td>
</tr>

如何每 2 秒升级一次时间

这在dashboard.js 文件中

  app.get("/dashboard/:guildID/stats", checkAuth, (req, res) => 
    const guild = client.guilds.get(req.params.guildID);
    let player = client.music.players.get(req.params.guildID);
    let time;
    if (player) time = duration(player.queue[0].duration ).toString();
    if (!guild) return res.status(404);
    const isManaged = guild && !!guild.member(req.user.id) ? guild.member(req.user.id).permissions.has("MANAGE_GUILD") : false;
    if (!isManaged && !req.session.isAdmin) res.redirect("/");
    renderTemplate(res, req, "guild/stats.ejs", guild , player ,time);
  );

时间变量每秒更新一次,我该怎么办?

【问题讨论】:

【参考方案1】:

实现这一目标的一种方法是使用前端 javascript 触发网络以获取最新信息

const yourInfoSegment = $('#segment');

// Fetching the latest data every 2 seconds
setInterval(async () => 
  try 
    const res = await fetch('YOU-API.com/dashboard/$guidID/stats');
    if(!res.ok) 
      // Shows user there is a error while fetching data
      return;
    
    // Updating the DOM with the new html code from the API
    const htmlCode = await res.text();
    yourInfoSegment.innerHTML = htmlCode;
  
  catch (err) 
    // Show some error UI to the user
    console.error(err);
  
, 2 * 1000);

【讨论】:

以上是关于如何在 ejs 中每 2 秒更新一次时间元素的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios中每n秒获取一次位置更新

如何在android中的ble中每5秒更新一次电池电量

如何在 MVC 4 中每 3 秒刷新一次局部视图?

如何在 Python 中每 60 秒异步执行一次函数?

如何在tkinter中每10秒自动运行一次功能[重复]

如何使用协程在android中每1秒检查一次GPS可用性