【发布时间】:2018-06-04 22:24:14
【问题描述】:
我知道 await 非常不鼓励在循环中使用。但我被困在一个特定的案例上,我无法弄清楚如何有效地做到这一点。我想要像这样的变量values 的最终输出
{
jobId1: [[..], [..], [..], [..]],
jobId2: [[..], [..], [..], [..]] // list goes on
}
下面的 sn-p 代表我当前的实现。
for (let jb of jobList ) {
const subArray = []
const rel1 = new Parse.Relation(jb, 'applicants')
const rel2 = new Parse.Relation(jb, 'shortlisted')
const rel3 = new Parse.Relation(jb, 'hired')
const rel4 = new Parse.Relation(jb, 'rejected')
subArray.push(rel1.query().containedIn('objectId', uniqUserIds).select('objectId').find())
subArray.push(rel2.query().containedIn('objectId', uniqUserIds).select('objectId').find())
subArray.push(rel3.query().containedIn('objectId', uniqUserIds).select('objectId').find())
subArray.push(rel4.query().containedIn('objectId', uniqUserIds).select('objectId').find())
values[jb.id] = await Promise.all(subArray)
}
我可以将所有的 Promise 推送到一个单独的数组中,然后等待。但我会丢失承诺值属于哪个job id的轨道。尽管将整个 await 数组按每 4 个索引拆分一次可以得到我想要的,但我正在寻找更好的替代方案。
【问题讨论】:
-
but I'd lose out the track which promise value belongs to which job id- 不,你不会......和......最后两行?为什么?对 values[jb.id] 的第一个赋值是没有意义的,因为它被第二个覆盖了 -
+ Jaromanda X,据我所知,它用于在未定义的情况下进行初始化。但是我正在编辑 sn-p
-
"我知道
await在循环中非常不鼓励。" - 不是吗?如果您想要顺序迭代,这正是您要走的路。
标签: javascript node.js parse-server ecmascript-2017