如何发送一个GET请求与SetTimeout和获取数据,如果它还没有准备好?



在提交点击我发送一个POST请求与一些数据到服务器,作为响应,我得到一个对象与id超时. 然后我需要设置超时,并在时间到来时为数据发送GET请求。问题是数据还没有准备好,我得到未定义,我的React应用程序崩溃。

我被告知超时应该只从第一个请求开始(我的意思是我不能手动增加它或做这样的事情:timeout * 2,我需要只从第一个请求使用超时)。我该怎么做呢?我认为它可以以某种方式与While循环…但我不够聪明,写不出这些代码。请帮助

const [someData, setSomeData] = useState({}) // here comes undefined and app crashes because this object renders in DOM
const getData = async (id) => {
const response = await fetch(`$BASE_URL/${id}`)
setSomeData(response)
}
const onSubmit = async (data) => {
const { id, timeout } = await fetch(url, data)

setTimeOut(() => {
getData(id) // data is not ready and I get undefined
}, timeout) // its around 1000ms and I can't change it mannually

}

如果我这样做,那么一切都正常

const getData = async (id) => {
const response = await fetch(`$BASE_URL/${id}`)
setSomeData(response)
}
const onSubmit = async (data) => {
const { id, timeout } = await fetch(url, data)

setTimeOut(() => {
getData(id) 
}, 6000) // if I manually specify timeout to 6000

}

fetch将返回一个promise,您可以使用它来getData。

const onSubmit = async (data) => {
fetch(url, data)
.then(res => return res.json())
.then(res => getData(res.id))
}

相关内容

  • 没有找到相关文章

最新更新