首页 > 解决方案 > 映射数组返回未解决的承诺

问题描述

我有一个值数组,对于每个值我想返回一个在承诺中使用该值的对象,我有以下代码:

  const arr= serieses.map(async x => {
    const seriesId = await getSeriesIDFromName(x);
    return { part_id: partID, door_series_id: seriesId[0]["id"] };
  });

当我在一切完成后打印 arr 时,我得到了这个

[
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> }
]

但是如果我在返回语句之前打印每个值,我会得到我需要的,

{ part_id: 1, door_series_id: 1 }
{ part_id: 1, door_series_id: 12 }
{ part_id: 1, door_series_id: 15 }
{ part_id: 1, door_series_id: 16 }
{ part_id: 1, door_series_id: 8 }
{ part_id: 1, door_series_id: 6 },

我如何让 arr 隐藏这些值和 promise 对象?

标签: javascriptnode.jsexpress

解决方案


您应该使用Promise.all()解决数组中的所有承诺,像这样

const arr = serieses.map(async x => {
    const seriesId = await getSeriesIDFromName(x);
    return {part_id: partID, door_series_id: seriesId[0]["id"]};
});

const results = await Promise.all(arr)

results将包含一个数组,其中包含从每个承诺中解析的值


推荐阅读