让这个 .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/