【发布时间】:2021-04-22 01:59:49
【问题描述】:
我有一个接收用户名数组的函数。对于每一个,我需要获取连接 ID 并连接到另一个数组中。但我认为我确实遇到了一些竞争条件问题,这些问题可能会发生冲突并连接更少的结果......
const getConnections = async function (usernames) {
let connections = [];
await Promise.all(usernames.map(async (username) => {
try {
let connsFound = await dynamo.getConnectionsByUsername(username);
if (connsFound && connsFound.length > 0)
connections = connections.concat(connsFound);
} catch (error) {
console.error('ERROR GET CONNECTIONS', error)
}
}));
return connections;
};
连接的结果是一个数组,所以我想将结果合并到 var 连接...但是 .concat 不合并,它会创建一个新数组,所以我需要做一个 'var = var .concat(newArray)'
我担心这不安全,并且在某些操作中它会碰撞并覆盖某些结果...
有没有更好的方法?
干杯
【问题讨论】:
-
return connsFound;代替,并使用let connections = await Promise.all(...(Promise.all 将解析为 Promise 结果的数组,以相同的顺序,这正是您首先想要的,没有需要在这里连接任何东西)
标签: javascript node.js arrays promise async-await