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

      

  • 相关阅读:
    sourceinsight问题
    mysql函数调用过程
    visual studio 中sstrcpy报错的问题
    mysql基本操作
    c/c++程序连接mysql
    mysql 在visual studio中的配置
    va_start
    c do{}while(0)
    .NET 通用权限设计
    https://zhidao.baidu.com/question/362784520674844572.html
  • 原文地址:https://www.cnblogs.com/caoke/p/14186793.html
Copyright © 2011-2022 走看看