zoukankan      html  css  js  c++  java
  • 并发加载函数-防止接口重复提交以及查询

    /*
    并发加载函数 防止接口重复提交以及查询
    id:唯一值
    syncFunc:Promise函数
     */
    const _map={}
    const _startTimeMap={}
    function conCurentLoad (id,syncFunc) {
      //兼容并发加载的情况
      if(!_map[id]){
        _map[id]=[];
        _startTimeMap[id]=+new Date();
    
        return syncFunc().then(function (res) {
          setTimeout(function () {
            if(_map[id].length>0){
              _map[id].forEach(function (callback) {
                callback(res)
              })
            }
            delete _map[id]
          },0)
          return res;
        })
      }else{
        const now=+new Date();
        //10秒超时处理
        if(now-_startTimeMap[id]<10000){
          return new Promise(function (resolve) {
            _map[id].push(resolve)
          });
        }else{
          return syncFunc();
        }
      }
    }
    
    //demo
    conCurentLoad(2,function () {
      return new Promise(function (resolve) {
        setTimeout(function () {
          resolve(22)
        },100)
      })
    }).then(function (res) {
      console.log(res)
    })
    conCurentLoad(2,function () {
      return new Promise(function (resolve) {
        setTimeout(resolve,100)
      })
    }).then(function (res) {
      console.log(res)
    })
    

      

  • 相关阅读:
    BSGS模板(互质与不互质) 洛谷P4195、P3846
    整除分块(数论分块)
    洛谷P3327 [SDOI2015]约数个数和——莫比乌斯反演
    模块二
    模块
    二分法 匿名函数
    3.26作业
    函数的递归调用
    yield表达式 三元表达式
    3.25作业
  • 原文地址:https://www.cnblogs.com/caoke/p/14186793.html
Copyright © 2011-2022 走看看