javascript - 如何在EJS文件中使用setInterval?

标签 javascript node.js express ejs

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

<%setInterval(function(){%> <%RandomSubrecipesImg=tools.getRandomSubarray(recipesImg,4)%><br/> <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 有问题。你知道出了什么问题吗 ?

最佳答案

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

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

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

关于javascript - 如何在EJS文件中使用setInterval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276357/

相关文章:

javascript - 获取 SVG 中 g 元素的同级元素是使用 jquery 从页面上的其他 SVG 返回所有相似的级别元素。为什么?

node.js - 如何在我的 nginx 服务器上设置两个 Node JS 应用程序

javascript - 无法解析Azure函数中的json消息正文

node.js - 检查网站是否可联系

node.js - 在 Node js 应用程序中使用 Passport 进行身份验证

node.js - 如何删除特定数据mongodb+nodejs+expressjs

javascript - Bootstrap 3 导航标签不会在点击时改变

javascript - 识别 Bower 包中的发布文件

javascript - 寻找有关 jQuery 选择器引擎内部实现的信息(嘶嘶声)

node.js - 不从授权代码返回刷新 token