发起多个相同请求如何只请求一次,后面相同请求不发起?

let isAjax = false;
function ajax(key){
    return new Promise(()=>{
        if(localStorage){
        
        }else{
            if(isAjax){
                return false; //问提在这,原因是同一份数据,不需要重复请求,但是在第一请求的时候,如何我调用多次就会有问题,如何修改?
            }
            fetch(...) //存localStorage
        }
        
    })
}
created(){
//第一请求的时候,如何我调用多次就会有问题,如何修改?
ajax('key1')
ajax('key2')
}

请求一份字典数据,先查localStorage,没有就去请求
阅读 3.5k
1 个回答

稍加修改

let isAjax = false;

function ajax(key){
    return new Promise(()=>{
          if(isAjax){
              return false;
          }
          // 可以放在这里,也可以放在 setTimeout 后面,效果一样
          // Promise 会立即执行回调函数,在 setTimeout 前都是同步代码,下一次调用 ajax 函数的时候,全局变量 isAjax 一定被置为 true 了
          isAjax = true
          // 你需要做的异步操作
          setTimeout(console.log, 1000, key)
    })
}

ajax('key0')
ajax('key1')
ajax('key2')
ajax('key3')
ajax('key4')
ajax('key5')
ajax('key6')
ajax('key7')
ajax('key8')
ajax('key9')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题