e js asyn c true с узлом Express - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу вызвать некоторые из моих функций, которые асинхронны, чтобы вызываться из моих файлов e js.

Как будто у меня установлены эти функции как app.locals.someFunction

async someFunction(param){
  let data = await someAsyncStuff();
  // &  other things
  return data;
}

и я хочу использовать его внутри файла e js, как показано ниже:

<%
let data = await someFunction()
for(let x of data){%>

   <li><%=x%></li>

<%}%>

Это возможно с e js, если {async:true} передается как опция. Но где именно я должен передать это, когда мои настройки двигателя вида выглядят следующим образом?


//view engine setup
app.engine ('.html', ejs.renderFile);
app.set ('view engine', 'html');

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы должны передать аргумент asyn c в вызов функции render () как опции. Например,

res.render(view, {.., async:true, ... }...) 
0 голосов
/ 24 марта 2020

вместо res.render ()

const ejs = require('ejs');
const html = await ejs.renderFile(view, data, {async: true});
res.send(html);

каждый включает с await

<body>
    <%- await include(pageView);%>
</body>

asyn c теперь отлично

<%
let data = await collection.find().toArray();

for(let x of data){%>

   <li><%=x%></li>

<%}%>
...