【问题标题】:Retrieve variable used in request from response从响应中检索请求中使用的变量
【发布时间】:2021-06-10 22:39:44
【问题描述】:

我正在开发一个基于许多 ID 发出一定数量请求的函数。然后它会选择结果元素的 id。

我想在响应中传播我用于请求的 id。像这样:(仅供说明)

const fetchSomeIds = async (ids, Service) => {
    const requests = ids.map(id => { return { url: `/something/` + id + `/something-else`}});
    const responses = await Promise.all(requests.map(
        request => Service.get(request.url)
    ));
    const someIds = responses.map(element => {return {id: id/*(used in request)*/, some_id: element.data.some_id};});
    return someIds;
};

所以如果我使用 ids=[27,54] 并且我得到 some_id=133 和 some_id=32。响应应如下所示:

[
  { 
    "id": 27,
    "some_id": 133
  },
  {
    "id": 54,
    "some_id": 32
  }
]

【问题讨论】:

    标签: javascript node.js request response


    【解决方案1】:

    由于Promise.all preserves the order,你可以在同一索引处访问原始数组:

    const someIds = responses.map((element, index) => {
       return {id: ids[index], some_id: element.data.some_id};
    });
    

    但是,将处理全部放在一个 map 回调中可能会更简单:

    function fetchSomeIds(ids, Service) {
        return Promise.all(ids.map(async id => {
            const request = {url: `/something/` + id + `/something-else`};
            const response = await Service.get(request.url);
            const element = response;
            return {id, some_id: element.data.some_id};
        }));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2011-04-22
      • 2020-09-02
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多