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

      

  • 相关阅读:
    TCP同步与异步
    C#委托与事件
    线程
    C# 多人聊天程序
    vs启动错误
    记住我的痛苦
    C#命名空间与类名的冲突
    C#调试类
    linux ifconfig命令参数及用法详解linux查看配置网卡命令
    B/S架构
  • 原文地址:https://www.cnblogs.com/caoke/p/14186793.html
Copyright © 2011-2022 走看看