如何在EJS文件中使用setInterval?

时间:2019-01-20 12:19:06

标签: javascript node.js express ejs

我在EJS文件中使用setInterval时遇到问题,该文件是我的nodejs应用程序(带有Express)的一部分。我创建了函数 getRandomSubarray ,该函数从数组中随机选择图像的子集。我想每三秒钟更改一次此子集。这是我的代码中有问题的部分:

<%setInterval(function(){%> <%RandomSubrecipesImg=tools.getRandomSubarray(recipesImg,4)%>
<div class="navbar-image-box col-sm-3 d-none d-sm-block"><img class="navbar-image" src="<%=RandomSubrecipesImg[0].replace('public',"")%>"></div> <div class="navbar-image-box col-sm-3 d-none d-sm-block"><img class="navbar-image" src="<%=RandomSubrecipesImg[1].replace('public',"")%>"></div> <div class="navbar-image-box col-sm-3"><img class="navbar-image" src="<%=RandomSubrecipesImg[2].replace('public',"")%>"></div> <div class="navbar-image-box col-sm-3 d-none d-sm-block"><img class="navbar-image" src="<%=RandomSubrecipesImg[3].replace('public',"")%>"></div> <% },3000);%>

在浏览器中,我没有收到任何div。在删除setInterval的情况下,我在浏览器中有div元素,因此我认为 setInterval 出了点问题。你有什么想法吗 ?

1 个答案:

答案 0 :(得分:1)

EJS用于在服务器端渲染事物。但是setInterval是一个客户端函数,确实需要呈现。

准备数据服务器端并发送init请求中的所有内容,然后启动setInterval客户端并从您的API-端点获取“新”数据。可以通过AJAX或WebSockets完成。

或者您可以设置WebSocket并将“新”数据推送到所有客户端。