首页 > 解决方案 > 如何链接返回 Promise 的 API 请求,该请求在数组中有一个字段?

问题描述

需要链接 API 调用,以便在第一个 API 调用 Promise 中返回的数据然后用于调用另一个 API 调用。Api 调用返回 Json 数据,然后使用数组格式的字段,其中每个数组调用另一个 API 调用,这继续到多个级别和几个 API 调用。我知道嵌套 API 调用是一种不好的做法,最好使用 async 和 await 或链接承诺?但是在返回的数据有一个数组的情况下,我想继续为该数组中的每个元素进行另一个 API 调用,每个元素都会导致多个带有数组数据的承诺,这再次需要对每个元素进行 API 调用,并且等等。

标签: javascriptnode.jsapipromiseasync-await

解决方案


为每个 API 调用创建一个 Promise 并使用 Promise.all 之类的东西

let urls = [
  'https://api.com/product/1',
  'https://api.com/product/2',
  'https://api.com/product/3',
];

// map every url to the promise of the fetch
let requests = urls.map(url => fetch(url));

// Promise.all waits until all jobs are resolved
Promise.all(requests)
  .then(responses => responses.forEach(
    response => alert(`${response.url}: ${response.status}`)
  ));

推荐阅读