Axios multiple then's
So I have a problem, I want so that this Axios returns me second then, and it doesn't work, and I can't understand why. So this second then returns me undefined, but I wanted to get ID from that or any data, any suggestions? I checked some other posts, they seemed to have the same writing, but for me it just doesn't work, help pls:)
If you want to check Axios, at the end write ?q=Grimm (for example). So the full page is: https://api.tvmaze.com/singlesearch/shows?q=Grimm
.get('https://api.tvmaze.com/singlesearch/shows', {
params: {
q: id,
},
})
.then((res) => setOneShow([res.data]))
.then((res) => console.log(res));
Solution 1:
In a .then() chain
, the second then
block gets data returned from the first then
block.
In your case, to get the same data in the second then
block, alter your code as:
axios.get("https://api.tvmaze.com/singlesearch/shows", {
params: {
q: id
}
})
.then((res) => {
console.log("1", res);
return res;
})
.then((res) => console.log("2", res));
}
Solution 2:
Check this lessons: Arrow Functions, Promises. You are calling and returning setOneShow()
in your first .then()
method, not res
.
How it should looks like:
axios.get('https://api.tvmaze.com/singlesearch/shows', {
params: {
q: id,
},
})
.then((res) => {
setOneShow([res.data]);
return res;
})
.then((res) => {
console.log(res);
});