Javascript 在第一次请求状态为失败后,我如何才能提出不同的请求

Javascript 在第一次请求状态为失败后,我如何才能提出不同的请求,javascript,api,asynchronous,xmlhttprequest,Javascript,Api,Asynchronous,Xmlhttprequest,我试图获取一些对象,但问题是,我需要首先检查缓存端点上是否有任何对象,如果没有,我应该从常规端点执行正常的获取 到目前为止,我只能从以下位置获取数据: 正常端点并将所有内容设置为打开状态 缓存端点并将所有内容设置为打开状态 任何混合这两种方法的尝试都以失败告终:( 如何混合这两种方法 const getCache = async () => { try { const apiCall = await fetch(fetchCacheEndpoint) const dat

我试图获取一些对象,但问题是,我需要首先检查缓存端点上是否有任何对象,如果没有,我应该从常规端点执行正常的获取

到目前为止,我只能从以下位置获取数据:

  • 正常端点并将所有内容设置为打开状态
  • 缓存端点并将所有内容设置为打开状态
  • 任何混合这两种方法的尝试都以失败告终:(

    如何混合这两种方法

    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上为你的案子做了手脚:

    如果你不明白什么,尽管问吧