gpt4 book ai didi

javascript - 在同一个函数中进行两次调用

转载 作者:行者123 更新时间:2023-12-01 01:20:15 25 4
gpt4 key购买 nike

我有两个请求,一个 GET 和一个 POST 请求,我正在获取 GET 请求并在数组内设置响应状态,我想将此数组传递给 POST 请求正文,然后我正在获取 POST 请求所以我可以调用电话,问题是它没有在 GET 调用中设置状态,并且总是返回未定义,我不明白为什么,这是代码:

我的构造函数:

constructor(props){
super(props);
this.state = {
info: [],
}
}

功能:

myFunction = async () => {
fetch("https://myapp.com/info", {
method: "GET",
headers: {
"Content-Type": "application/json",
"x-auth-token": token
}
})
.then(res => res.json())
.then(response => {
this.setState({ info: response });
fetch("https://myapp.com/submit_info", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-auth-token": token
},
body: JSON.stringify({
infoID: this.state.info.id
})
})
.then(res => res.json())
.then(result => {
console.log(result);
});
})
.catch(error => console.log(error));
};

最佳答案

您忘记返回 promise ,然后使用 response 对象设置 infoID 字段,而不是状态导致调用 this.setState 是异步的,当您进行第二次 api 调用时仍将处于挂起状态。

myFunction = () => {
fetch("https://myapp.com/info", {
method: "GET",
headers: {
"Content-Type": "application/json",
"x-auth-token": token
}
})
.then(res => res.json())
.then(response => {
this.setState({ info: response }); // async call
return fetch("https://myapp.com/submit_info", {
// return promise for chaining
method: "POST",
headers: {
"Content-Type": "application/json",
"x-auth-token": token
},
body: JSON.stringify({
infoID: response.id
})
})
.then(res => res.json())
.then(result => {
console.log(result);
});
})
.catch(error => console.log(error));
};

关于javascript - 在同一个函数中进行两次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com