如何在返回之前等待循环中的承诺?
How to wait on promises in loop before returning?
我正在做一个项目,我需要遍历多个值,然后计算数据库中与这些值匹配的项目数。然后返回结果。
这是我想要的代码 运行:
var types = config.deviceTypes
for(const type of types)
{
db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
.then(results => type.count = results.docs.length)
}
return types
运行 但是 returns 类型没有对计数进行任何修改,因为这个函数是 运行 异步的。我尝试进行以下修改以使用 await:
var types = config.deviceTypes
for(const type of types)
{
var results = await db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
type.count = results.docs.length
}
return types
然而这给出了错误:“SyntaxError: await is only valid in async function”
我在节点 14.17.0 上使用 PouchDB
"SyntaxError: await is only valid in async function"
可以通过确保在异步函数中执行此操作来修复错误。
async function foo() {
var types = config.deviceTypes
for(const type of types)
{
var results = await db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
type.count = results.docs.length
}
return types;
}
我正在做一个项目,我需要遍历多个值,然后计算数据库中与这些值匹配的项目数。然后返回结果。
这是我想要的代码 运行:
var types = config.deviceTypes
for(const type of types)
{
db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
.then(results => type.count = results.docs.length)
}
return types
运行 但是 returns 类型没有对计数进行任何修改,因为这个函数是 运行 异步的。我尝试进行以下修改以使用 await:
var types = config.deviceTypes
for(const type of types)
{
var results = await db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
type.count = results.docs.length
}
return types
然而这给出了错误:“SyntaxError: await is only valid in async function”
我在节点 14.17.0 上使用 PouchDB
"SyntaxError: await is only valid in async function"
可以通过确保在异步函数中执行此操作来修复错误。
async function foo() {
var types = config.deviceTypes
for(const type of types)
{
var results = await db.find(
{
selector:
{
type: {$eq: type.name}
}
}
)
type.count = results.docs.length
}
return types;
}