【发布时间】:2021-12-18 02:13:23
【问题描述】:
我正在做一个简单的Redis' 请求,它应该返回我数据库中的所有值(不是键)。问题是我的函数在.forEach 甚至开始之前返回tab。为什么我会知道?我的console.log(tab) 的结果在每次迭代的console.log(cards) 之前打印。
我的解释器还在.forEach 函数中告诉我"Promise returned from forEach argument is ignored"。
我在那里做错了什么?为什么 async/await 不能在 .forEach 内部工作?
router.get("/", async (req, res) => {
try {
const keys = await client.keys("*")
//console.log(result)
const tab = []
await keys.forEach(async (key) => {
const cards = await client.smembers(key)
console.log(cards)
tab.push(cards)
})
console.log(tab)
return res.send(tab)
} catch (err) {
console.error(err)
}
});
【问题讨论】:
-
forEach没有返回承诺,这就是您收到该警告的原因。 -
reduce 或 map 怎么样?它会和他们一起工作吗?我想避免使用循环
-
您仍将使用
map或reduce遍历数组。也许创建一个承诺数组并等待Promise.all。
标签: javascript node.js redis