gpt4 book ai didi

node.js - 渲染前等待 map 功能

转载 作者:太空宇宙 更新时间:2023-11-03 23:21:51 28 4
gpt4 key购买 nike

我想在渲染 EJS 模板之前使用 NodeJS 中的 map() 来更改数组的项目。

但是,有时 map() 在渲染之前尚未完成,我会收到错误 500...

我的代码:

 var newCards = cards.map(function(card) {
switch(card.display) {
case 'number':
dbConnexion.query(card.query).success( function(results) {
card.results = results.length;
});
break;
case 'table':
dbConnexion.query(card.query).success( function(results) {
card.results = results;
});
break;
}
return card;
});
response.render('myview', {
newCards: newCards
});

最佳答案

您在 map 中使用异步函数,您应该 promise 您的 map 并等待 promise 完成。

let promises = cards.map(function(card) {
return new Promise(function(resolve, reject) {
switch(card.display) {
case 'number':
dbConnexion.query(card.query).success( function(results) {
card.results = results.length;
resolve(card);
});
break;
case 'table':
dbConnexion.query(card.query).success( function(results) {
card.results = results;

resolve(card);
});
break;
}
});
});

Promise.all(promises).then(() => {
response.render('myview', {
newCards: newCards
});
});

关于node.js - 渲染前等待 map 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680962/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com