Javascript TypeError:response2.json不是函数

Javascript TypeError:response2.json不是函数,javascript,reactjs,promise,fetch,anonymous,Javascript,Reactjs,Promise,Fetch,Anonymous,我尝试使用匿名函数来获取两个数据集。使用两个fetch调用第二个调用取决于第一个调用,第二个调用是一个循环,我在第二个调用response2.json不是一个函数 async function example() { let response1 = await fetch( `https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=9c348b767f7a0403e

我尝试使用匿名函数来获取两个数据集。使用两个fetch调用第二个调用取决于第一个调用,第二个调用是一个循环,我在第二个调用response2.json不是一个函数

    async function example() {
    let response1 = await fetch(
        `https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=9c348b767f7a0403e907b0788188afba&text=observatory&accuracy=+11&media=photos+&geo_context=1&lat=41.8989&lon=-87.6123&radius=25&radius_units=km&extras=&format=json&nojsoncallback=1`
    );
    let json = await response1.json();
    console.log(json.photos.photo);

    const response2 = await json.photos.photo.map((i) =>
        fetch(
            `https://www.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=9c348b767f7a0403e907b0788188afba&photo_id=${i.id}&format=json&nojsoncallback=1`
        )
    );


    const json2 = await response2.json();
    console.log(json2);
    return {
        dataset1: json,
        dataset2: json2
    };
}
问题

response2
是一系列承诺

等待json.photos.photo.map
不会使内部请求同步

const response2 = await json.photos.photo.map((i) =>
        fetch(
            `https://www.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=9c348b767f7a0403e907b0788188afba&photo_id=${i.id}&format=json&nojsoncallback=1`
        )
    );
解决方案:

const promises = json.photos.photo.map((i) =>
    fetch(
        `https://www.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=9c348b767f7a0403e907b0788188afba&photo_id=${i.id}&format=json&nojsoncallback=1`
    )
));

// get all response from promises
const response2 = await Promise.all(promises)

// response2 is array of responses , so we need to loop through it
const json2 = await Promise.all(response2.map(res => res.json()));
问题

response2
是一系列承诺

等待json.photos.photo.map
不会使内部请求同步

const response2 = await json.photos.photo.map((i) =>
        fetch(
            `https://www.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=9c348b767f7a0403e907b0788188afba&photo_id=${i.id}&format=json&nojsoncallback=1`
        )
    );
解决方案:

const promises = json.photos.photo.map((i) =>
    fetch(
        `https://www.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=9c348b767f7a0403e907b0788188afba&photo_id=${i.id}&format=json&nojsoncallback=1`
    )
));

// get all response from promises
const response2 = await Promise.all(promises)

// response2 is array of responses , so we need to loop through it
const json2 = await Promise.all(response2.map(res => res.json()));
接下来的
wait
是一个数组,而不是承诺 所以也许你可以用Promise.all来包装这个数组。 但是
fetch
比一般的承诺有点特殊

const response2 = await Promise.all(json.photos.photo.map(fetch('yourUrl')));
const responseVirtual = response2.map(res => res.json());
可以帮你吗,兄弟

接下来的
wait
是一个数组,而不是承诺 所以也许你可以用Promise.all来包装这个数组。 但是
fetch
比一般的承诺有点特殊

const response2 = await Promise.all(json.photos.photo.map(fetch('yourUrl')));
const responseVirtual = response2.map(res => res.json());

希望对您有所帮助,bro

response2
将是一个获取响应数组-数组不是获取响应
response2
将是一个获取响应数组-数组不是获取响应更改
Promise。调用
Promise。所有
:D@VivekDoshi抱歉,这是一个输入错误,您还需要调用fetch inside map,由于两个URL都不一致,请更改
承诺。请调用
承诺。所有
:D@VivekDoshi抱歉,这是一个输入错误,您还需要调用fetch inside map,因为两个URL都不同