TypeError:response2.json不是函数

问题描述 投票:0回答:1

我正在尝试使用匿名函数来获取两个数据集。使用两次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
    };
}
javascript reactjs promise fetch anonymous
1个回答
0
投票

问题

response2是应允数组,

[await 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`
        )
    );

解决方案:

let 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`
    )
));

const response2 = await Promise.all(promises)
© www.soinside.com 2019 - 2024. All rights reserved.