javascript - 试图从包含 API 地址的数组字符串中获取数据
问题描述
我想从包含 API 的数组中获取数据,问题是数组中的 api 数量有时与其他数组不同。
{
"name": "CR90 corvette",
"model": "CR90 corvette",
"manufacturer": "Corellian Engineering Corporation",
"cost_in_credits": "3500000",
"length": "150",
"max_atmosphering_speed": "950",
"crew": "30-165",
"passengers": "600",
"cargo_capacity": "3000000",
"consumables": "1 year",
"hyperdrive_rating": "2.0",
"MGLT": "60",
"starship_class": "corvette",
"pilots": [],
"films": [
"http://swapi.dev/api/films/1/",
"http://swapi.dev/api/films/3/",
"http://swapi.dev/api/films/6/"
],
"created": "2014-12-10T14:20:33.369000Z",
"edited": "2014-12-20T21:23:49.867000Z",
"url": "http://swapi.dev/api/starships/2/"}
在上面的 json 代码中,Films字段是我的意思的数组,例如在这个数据中,Films有 3 个 API 地址形式的数据,在其他数据中,它们有 2 个 API 地址数据,依此类推。
我的问题是如何像这样调用数组内部的 API,以及如何同时调用内部的所有 API 地址?
感谢您抽出宝贵时间阅读本文,赞。
解决方案
有很多方法可以做到这一点。以下代码快速连续发送对电影数据的请求,然后用于Promise.all
等待它们全部返回,然后再继续。请注意,Promise.all
如果一个请求引发异常,它将快速失败。Promise#allSettled
如果您想慢速失败,请使用。
const data = { films: [ 'http://example.com/1', 'http://example.com/2', 'http://example.com/3' ]}
const { films: urls } = data
const promises = []
for(let url of urls)
promises.push(fetch(url))
Promise.all(promises)
.then((filmDetails) => {
for(let details of filmDetails)
console.log(filmDetails)
})
推荐阅读
- postgresql - 在 Hasura 中创建多对多关系
- html - 即使使用了 height 和 width 属性,图像也没有在 css 中调整大小
- css - 如何使用 CSS 2 将文本连续换行而没有空格?
- arrays - VBA 中的 Vlookup 等效项与 ARRAYS 中的 APROXIMATE MATCH
- paypal - NextJs 从 Paypal 获取交易响应
- c# - 如何使用两个可选路由值配置路由?
- javascript - 在 ReactJS 中,使用子组件后渲染中断
- android - 当两个依赖项使用FFmpeg时如何解决不满意的链接错误
- amazon-web-services - 使用 Amazon S3 SignedURL 从浏览器客户端 PUT 文件是否安全?
- c - 使用嵌套的 for 循环在 C 语言中打印数字矩阵模式高级/中等调试