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)
    })
    

      

  • 相关阅读:
    Java String 乱码
    HBase非原理性浅析
    git cherry-pick
    数据结构之队列
    数据结构之栈
    算法之简单排序
    数据结构之数组
    数据结构简介
    Java类型信息
    基数排序
  • 原文地址:https://www.cnblogs.com/caoke/p/14186793.html
Copyright © 2011-2022 走看看