javascript - .forEach() 在 EJS 中不打印任何内容

标签 javascript node.js express ejs

让这个 .ejs 文件循环访问对象并从 API 获取一些数据。获取数据后,它什么也不做。

我控制台记录了 API 结果,它们没问题,但问题是它没有将它们回显到屏幕上。

代码如下:

<div class="bg-white jumbotron no-shadow">
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-sm-12">
                <%
                    if(apiResults.featured.male){
                        %>
                            <div class="row">
                                <%
                                Array.from(apiResults.featured.male).forEach((profile) => {
                                helper.api.getPhotoByKey(profile.photoKey)
                                    .then(photoURL => {
                                        %>
                                            <div class="col-xs-4">
                                                <img src="<%= photoURL%>">
                                            </div>
                                        <%
                                    })
                                    .catch(err => console.log(err))
                                })%>
                            </div>
                        <%
                    }
                %>  
            </div>
        </div>
    </div>
</div>

我对 EJS 和 NodeJS 非常陌生,有人可以指导我完成这个吗?谢谢您

最佳答案

您的异步调用只有在模板渲染完成后才会完成。您需要在渲染模板之前将这些数据放在一起,例如:

Promise.all(
    Array.from(apiResults.featured.male)
    .map((profile) => helper.api.getPhotoByKey(profile.photoKey))
    )
    .then(photoURLs => {
        // Add them to your data and call ejs.render...
    });

...或类似的。

关于javascript - .forEach() 在 EJS 中不打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605389/

相关文章:

javascript - Microsoft Bot 自动测试

javascript - Promise 全部完成后设置 React 数组状态

node.js - Redis pub/sub - 同一进程监听一个 channel

node.js - ExpressJS-Localhost 没有显示任何内容

javascript - Jquery动态表不工作

JavaScript - onCopy 事件和模糊

javascript - 将 PHP 与混淆的 JS 混合在一起

iOS 到 Node.js 后端 SSL 握手失败

node.js - MongoDB 的奇怪日期行为

javascript - ExpressJs + Passport.js + MySQL 身份验证