我在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 出了点问题。你有什么想法吗 ?
答案 0 :(得分:1)
EJS用于在服务器端渲染事物。但是setInterval是一个客户端函数,确实需要呈现。
准备数据服务器端并发送init请求中的所有内容,然后启动setInterval
客户端并从您的API-端点获取“新”数据。可以通过AJAX或WebSockets完成。
或者您可以设置WebSocket并将“新”数据推送到所有客户端。