Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Ejs中处理回调响应_Javascript_Node.js_Ejs - Fatal编程技术网

Javascript 如何在Ejs中处理回调响应

Javascript 如何在Ejs中处理回调响应,javascript,node.js,ejs,Javascript,Node.js,Ejs,在Node.js应用程序中,我想在Ejs代码中调用一些异步函数并呈现结果。我试过: <ul> <% setTimeout(function () { %> <% supplies = [1, 2, 3, 4]; %> <% for(var i=0; i<supplies.length; i++) {%> <li><%= supplies[i] %></li> <% } %> <% }

在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不支持这样的功能,但是我们可以做的是使用模块取消同步函数

    
    

      为什么需要这样做,因为这在EJS中是不可能的。这是一个模板引擎,它只是将所有内容呈现为HTML。它不能设置超时或异步调用。在这个上下文中,我基本上没有访问Node.js代码的权限,在ejs文件中,我运行自定义的东西。我推测使我的文件同步会起作用。但是为什么它不能处理异步调用呢?因为ejs就是这样工作的:)@VsevolodGoloviznin知道了。最后我取消了函数的同步,它工作得很好。我贴了一个例子作为答案。:)
      <% 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>