Javascript 如何使用promise.all从响应中获取最终json对象?
我正在使用promise.all去获取三个端点 promise.all返回了一系列响应,如下所示:Javascript 如何使用promise.all从响应中获取最终json对象?,javascript,async-await,fetch,Javascript,Async Await,Fetch,我正在使用promise.all去获取三个端点 promise.all返回了一系列响应,如下所示: 0: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/af3910a6-429f-4c74-9ad5-dfe1c4aa04f2", redirected: false, status: 403, ok: false, …} 1: Response {type: "basic", url: "https://cdpn.io/boo
0: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/af3910a6-429f-4c74-9ad5-dfe1c4aa04f2", redirected: false, status: 403, ok: false, …}
1: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/6bc92fdd-b0f4-4286-ad71-1f99fb4a0d1e", redirected: false, status: 403, ok: false, …}
2: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/f25fa661-3073-414d-968a-ab062e3065f7", redirected: false, status: 403, ok: false, …}
但我无法获得这些端点的实际json,我总是会得到更多承诺
im遇到问题的代码部分位于函数的底部,响应数组保存在一个名为:linkstospecierresponses
我尝试过在响应数组上映射,并使用.json()以及之后的响应,如下所示:
0: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/af3910a6-429f-4c74-9ad5-dfe1c4aa04f2", redirected: false, status: 403, ok: false, …}
1: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/6bc92fdd-b0f4-4286-ad71-1f99fb4a0d1e", redirected: false, status: 403, ok: false, …}
2: Response {type: "basic", url: "https://cdpn.io/boomboom/v2/f25fa661-3073-414d-968a-ab062e3065f7", redirected: false, status: 403, ok: false, …}
linksToSpecieResponses.forEach(response=>response.json()。然后(x=>results.push(x))
但它不起作用
你知道我必须做什么才能得到这些响应的实际json吗
以下是代码笔中的代码:
这是代码:
const TITLE = 'Princess Mononoke'
const SPECIE = 'God'
const SOECIES_URL = 'htps://ghibliapi.herokuapp.com/species/b5a92d0e-5fb4-43d4-ba60-c012135958e4'
async function getMoro(url) {
const moviesResponse = await fetch(url)
const movies = await moviesResponse.json()
const movie = movies.find(movie => movie.title === TITLE)
const speciesOfMoviePromises = movie.species.map(async url => await fetch(url))
const speciesOfMovieResponses = await Promise.all(speciesOfMoviePromises)
let speciesLinks = []
for(let i = 0 ; i<speciesOfMovieResponses.length ; i++){
speciesLinks.push( await speciesOfMovieResponses[i].json() )
}
const linksToSpecie = speciesLinks.map(async x => await fetch(x.id))
const linksToSpecieResponses = await Promise.all(linksToSpecie)
// What should i do with this array of promises?
console.log('linksToSpecieResponses: ', linksToSpecieResponses)
return await linksToSpecieResponses
}
getMoro('https://ghibliapi.herokuapp.com/films')
const TITLE='Mononoke公主'
常量物种=‘上帝’
常数htps://ghibliapi.herokuapp.com/species/b5a92d0e-5fb4-43d4-ba60-c012135958e4'
异步函数getMoro(url){
const moviesResponse=等待获取(url)
const movies=await moviesResponse.json()
const movie=movies.find(movie=>movie.title===title)
const speciesOfMoviePromises=movie.species.map(异步url=>await-fetch(url))
const speciesOfMovieResponses=等待承诺。全部(MoviePromisses speciesOfMoviePromises)
让speciesLinks=[]
for(设i=0;我等待获取(x.id))
const linksToSpecieResponses=等待承诺。全部(linksToSpecie)
//我该如何处理这些承诺?
log('linkstospecierresponses:',linkstospecierresponses)
返回等待链接到指定响应
}
格特莫罗https://ghibliapi.herokuapp.com/films')
我认为您缺少了这样一行:constjsonfromresponses=wait Promise.all(linksToSpecieResponses.map(response=>response.json())
您的一些请求正在抛出未捕获的403。您正在命中的URL是https://cdpn.io/boomboom/v2/f25fa661-3073-414d-968a-ab062e3065f7
这是一个错误的URL。我认为您的一些请求缺少基本URL。您预期的结果是什么(请描述您在这里做什么/试图实现什么)?谢谢。我想您遗漏了一行,比如:constjsonfromresponses=wait Promise.all(linksToSpecieResponses.map(response=>response.json())
您的一些请求正在抛出未捕获的403。您正在命中的URL是https://cdpn.io/boomboom/v2/f25fa661-3073-414d-968a-ab062e3065f7
这是一个错误的URL。我认为您的一些请求缺少基本URL。您预期的结果是什么(请描述您在这里做什么/试图实现什么)?谢谢。