Ejs中如何处理回调响应

How to handle callback responses in Ejs

在我的 Node.js 应用程序中,我想在 Ejs 代码中调用一些异步函数并呈现结果。我试过了:

<ul>
<% setTimeout(function () { %>
<% supplies = [1, 2, 3, 4]; %>
<% for(var i=0; i<supplies.length; i++) {%>
   <li><%= supplies[i] %></li>
<% } %>
<% }, 1000) %>
</ul>

不过好像不行。为什么它不起作用,我该如何解决?

好吧,看来Ejs不支持这样的功能,不过我们可以做的是deasync使用deasync模块的功能。

<% function foo (timeout, callback) { %>
<%     setTimeout(function () { %>
<%          callback(null, [1, 2, 3, 4]; %>
<%     }, timeout); %>
<% } %>

<% var Deasync = require("deasync") %>
<% var fooSync = Deasync(foo) %>

<ul>
<% supplies = fooSync(1000); %>
<% for(var i=0; i<supplies.length; i++) {%>
<li><%= supplies[i] %></li>
<% } %>
<% }, 1000) %>
</ul>