繁体   English   中英

Typescript map 不等待结果[重复]

Typescript map not awaiting result [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用与 TypeOrm 的多对多关系,后者需要 Id 来查找文章的子类别。

问题是 map 没有等待将结果推送到数组中。

这是我的 map function 与列表和日志:

const subcategories = articleDto.subcategoriesIds.split(',').map(x => +x)
const subcategoriesList = []
    
await subcategories.map(async (subcategoryId) => {
    console.log('start:' + subcategoryId)
    const category = await this.subcategoriesService.getSubcategoryById(subcategoryId);
    console.log('mid:' + subcategoryId)
    await subcategoriesList.push(category);
    console.log('end:' + subcategoryId)
});

console.log('### ' + subcategories);
console.log('### ' + subcategoriesList);

这是日志的 output:

start:2
start:3
### 2,3
### 
mid:2
end:2
mid:3
end:3

我不明白为什么不等待结果,如果您知道如何解决此问题,感谢您的帮助。

编辑:通过在内部使用 map 添加Promise.all解决了这个问题

const subcategories = articleDto.subcategoriesIds.split(',').map(x => +x);

const subcategoriesList = await Promise.all(subcategories.map((subcategoryId) => {
      return new Promise((resolve => {
        this.subcategoriesService.getSubcategoryById(subcategoryId).then(result => {
          resolve(result);
        });
      }))
    }));
1 个回复

数组原型方法不会等待,即使它们是异步的。 代码仍然以同步方式触发。 如果你需要这些等待你可以做

const subcategories = articleDto.subcategoriesIds.split(',').map(x => +x)
const subcategoriesList = []

for (const subCategoryId of subcategories) {
  console.log('start:' + subcategoryId)
  const category = await this.subcategoriesService.getSubcategoryById(subcategoryId);
  console.log('mid:' + subcategoryId)
  await subcategoriesList.push(category);
  console.log('end:' + subcategoryId);
}

console.log('### ' + subcategories);
console.log('### ' + subcategoriesList);
3 打字稿打字稿[重复]

这个问题已经在这里有了答案 : 2年前关闭。 如何将JSON对象转换为打字稿类 (18个答案) 我收到一些JSON,可以是TextField对象或Dat ...

4 Typescript,等待 function

我正在尝试使用 typescript 和 aws-sdk package 将文件上传到 S3 存储桶。 理想的结果是:上传到 s3 成功 THEN => 加载 SQS 消息。 这是 function 用于读取收到的文件并执行 s3Upload 在我的 saveToS3 我有这个 我基本上试图 ...

5 打字稿承诺并等待

我正在使用打字稿并尝试获取我们目前所处位置的地理位置。 我可以获取位置,但我的代码继续而不设置位置。 我决定使用await并承诺。 我创建了一个看起来像这样的服务: 所以我的问题是我在等待时如何设置它。 所以当我试图访问它时它在那里? ...

7 如何创建打字稿地图?

我想创建一个地图total ,可以这样使用: total['cashBalance'].sum 根据现有数据 我正在尝试如下,但它不起作用。 当然,我的语法不正确...有人可以帮我吗? 谢谢阿南德 ...

8 地图打字稿枚举

我将如何映射打字稿枚举? 例如,使用字符串,您可以执行以下操作: 这当然不适用于枚举: 理想情况下,我想以通用的方式执行此操作,以便我可以简单地获取我拥有的任何枚举并将其放入 map 函数,同时保留类型信息。 用法可能如下所示: 我一直在摆弄一个为我做这件事的函数,但一直有问题让泛型恰到 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM