以承诺作为值的打字稿字典

分享于2022年07月17日 async-await asynchronous javascript typescript 问答
【问题标题】:以承诺作为值的打字稿字典(Typescript Dictionary with promises as values)
【发布时间】:2022-01-27 07:19:43
【问题描述】:

User 类型的对象数组。它们有一个我们需要重视的异步函数。我们如何将字典的值分配给 Promise,然后一次性解决它们?

const userToFooPromises: { [userId: number]: Promise } = { }

字典中是否有与 Promise.all(...) 等价的词?我们希望返回类型为 { [userId: number]: Foo[] }

  • 像 bluebird 这样的 Promise 库有 helper methods 可以在这里工作,但否则,您需要将字典映射到数组。

【解决方案1】:

您可以将对象分成多个条目,对映射的值运行 Promise.all ,用解析的值重新分配值,然后重构对象。

const entries = Object.entries(userToFooPromises);
const resolved = await Promise.all(entries.map(o => o[1]));

entries.forEach(o => o[1] = resolved[1]);

Object.fromEntries(entries);