我尝试获取一些对象,但问题是我需要首先检查缓存端点上是否有任何对象,如果没有,我应该从常规端点进行正常的获取。
到目前为止,我只能从以下位置获取:
- 正常端点并将所有内容设置为状态,
- 缓存端点并设置状态中的所有内容
任何混合使用这两种方法的尝试都以失败告终:(
如何混合使用这两种方法?
const getCache = async () => {
try {
const apiCall = await fetch(fetchCacheEndpoint)
const data = await apiCall.json()
return data
} catch (e) {
console.log(e);
}
}
const pageOne = getCache().then((result) => {
const convertedOBj = result.doSomeSeriousStuff()
this.setState({
desiredObj: convertedOBj
})
})
我希望做这样的事情
const getCache = async () => {
try {
const apiCall = await fetch(fetchCacheEndpoint)
const data = await apiCall.json()
return data
} catch (e) {
console.log(e);
}
}
let convertedOBj
const pageOne = getCache().then((result) => {
if ((result === undefined) || (!result) || (result && !result.length > 0)) {
const makeRegularFetch = async () => {
const regularFetch = await fetch(regularEndPoint)
const data = await regularFetch.json()
}
const pageTwo = makeRegularFetch ().then((result) => {
convertedOBj = result.doSomeSeriousStuff()
this.setState({
desiredObj: convertedOBj
})
})
} else {
convertedOBj = result.doSomeSeriousStuff()
this.setState({
desiredObj: convertedOBj
})
}
})
第一次获取(getCache)失败后,有另一个获取(makeRegularFetch)到第二个端点,这总是没问题,但仅在第一个(getCache)返回空对象或任何类型的错误的情况下 我该如何处理这种行为?
最佳答案
从我在代码的第二部分中看到的,您从未执行 pageOne
函数。
在定义后尝试 pageOne()
。
但是我在 stackblitz 上为你的情况做了一个 fiddle :https://stackblitz.com/edit/js-eufm8h
如果有不明白的地方,请随时提问。
关于javascript - 在第一个请求失败后,如何设法发出不同的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695737/