javascript - .forEach() 不在 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...
});
...或类似的。