Data Returned By Youtube Api Seems Immutable?
Basically the above onSearch method will call YouTube API and return me a list of videos, in data.items For each and every video/item, they are lacking of statistics and so I'm fi
Solution 1:
Putting an async
function inside a forEach
won't pause the outer thread until all iterations have been completed - you need Promise.all
to map
each asynchronous iteration to a Promise
and wait for each Promise
to be resolved before continuing instead:
const query = qs.stringify({ ...API_QUERY_PARAMS, q: this.state.searchString });
const url = `https://www.googleapis.com/youtube/v3/search?${query}`
const { data } = await axios.get(url);
await Promise.all(data.items.map(async (vid) => {
let id = vid.id.videoId; //Individual video ID
const individualQuery = qs.stringify({ ...INDIVIDUAL_API_QUERY_PARAMS, id });
const individualURL = `https://www.googleapis.com/youtube/v3/videos?${individualQuery}`;
const { data } = await axios.get(individualURL);
vid.statistics = data.items[0].statistics
}))
this.setState({ videos: data.items });
Post a Comment for "Data Returned By Youtube Api Seems Immutable?"