2015-10-19 38 views
0

在我的Node.js应用程序中,我想调用Ejs代码中的某个异步函数并呈现结果。我试过:如何处理Ejs中的回调响应

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

但它似乎不起作用。为什么它不工作,我该如何解决它?

+0

为什么你需要这样做,因为这在EJS中是不可能的。它是一个模板引擎,它只是将所有内容呈现为HTML。它不能设置超时或异步调用。 –

+0

我基本上没有访问Node.js代码在这个上下文和ejs文件我运行我的自定义的东西。我推测,使我的文件同步将工作。但为什么它不适用于异步调用? –

+0

因为这就是ejs的工作原理:) –

回答

-2

好了,似乎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>