简体   繁体   English

如何在EJS文件中使用setInterval?

[英]How to use setInterval in EJS file?

I have a problem with using setInterval in my EJS file, which is part of my nodejs app (with Express). 我在EJS文件中使用setInterval时遇到问题,该文件是我的nodejs应用程序(带有Express)的一部分。 I have created function getRandomSubarray , which chooses randomly subset of images from array. 我创建了函数getRandomSubarray ,该函数从array中随机选择图像的子集。 I want to change this subset every three seconds. 我想每三秒钟更改一次此子集。 This is problematic piece of my code: 这是我的代码中有问题的部分:

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

In browser I haven't received any divs. 在浏览器中,我没有收到任何div。 In case of removing setInterval I have div elements in browser, so I think there is something wrong with setInterval . 在删除setInterval的情况下,我在浏览器中有div元素,因此我认为setInterval有点问题。 Do you have any idea what is wrong ? 你有什么主意吗?

EJS is used for render things server-side. EJS用于在服务器端渲染事物。 But setInterval is a client-side function which doenst need to be rendered. 但是setInterval是一个客户端函数,确实需要呈现。

Prepare your data serverside and send everything in init request, then start setInterval client-side and fetch the "new" data from your API - Endpoint. 准备数据服务器端,并在init请求中发送所有内容,然后启动setInterval客户端并从您的API-端点获取“新”数据。 Could be done via AJAX or WebSockets. 可以通过AJAX或WebSockets完成。

Or you could setup an WebSocket and push "new" data to all clients. 或者,您可以设置一个WebSocket并将“新”数据推送到所有客户端。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM