美文网首页
函数接口防抖

函数接口防抖

作者: 我的名字好长好长灬 | 来源:发表于2022-07-01 11:24 被阅读0次

copy to dartpad test;


‘’‘dart

typedef HttpRequestMethod = Future<bool> Function();

void main() {

var http = Http();

start(http,isDebounce:true);

}

var count = 0;

void start(Http http,{isDebounce = false}) async{

  if(count >= 10){

    count = 0;

    return;

  }

  print("接口访问 count:$count");

  //1.0

//  http.getRequest(isDebounce:isDebounce);

  //2.0

  http.getRequestFunction( () async{

    await Future.delayed(Duration(seconds: 1));

    print("模拟接口访问返回");

    return Future.value(true);

  } ,isDebounce:isDebounce);

  //测试sleep

  await Future.delayed(Duration(seconds: 1));

  count ++;

  return start(http,isDebounce:isDebounce);

}

class Http {

  List<String> _methods = [];

  //isDebounce version 1.0

  void getRequest({identify  = "getRequest",isDebounce = false,effectivenessTime = 5}){

    if(isDebounce){

      if(_methods.contains(identify)){

        print("被拦截");

        return;

      }

      _methods.add(identify);

    }

    Future.delayed(Duration(seconds:1),(){

      print("模拟接口访问返回 count:$count");

      Future.delayed(Duration(seconds:effectivenessTime),(){

        if(isDebounce){

          print("可进行下一次访问");

          _methods.remove(identify);

        }

      });

    });

  }

  //isDebounce version 2.0

  void getRequestFunction(HttpRequestMethod function,{identify  = "getRequestFunction",isDebounce = false,effectivenessTime = 5}) {

    if(isDebounce){

      if(_methods.contains(identify)){

        print("被拦截");

        return;

      }

      _methods.add(identify);

    }

  function().then((isFinish){

      Future.delayed(Duration(seconds:effectivenessTime),(){

        if(isFinish && isDebounce){

          print("可进行下一次访问");

          _methods.remove(identify);

        }

      });

  });

  }

}

’‘’

相关文章

  • 函数接口防抖

    copy to dartpad test; ‘’‘dart typedef HttpRequestMethod =...

  • debounce vs throttle

    常说的函数防抖和函数节流,都是为了不频繁触发某类操作或者接口请求。debounce(防反跳): 防抖throttl...

  • wangvue-utils,使用方法

    下载插件 1、方法 2、过滤器 3、防抖和节流 this.getData,调用的接口函数。3000 防抖时间。da...

  • javaScript 防抖函数

    一. 防抖函数的定义与使用 防抖函数的定义 防抖函数的调用 二. 防抖函数应用场景 其实在HTML 和javaSc...

  • Javascript 基础

    1、函数防抖和函数节流 【《javascript高级程序设计》里,函数节流是这里讲的函数防抖。】函数防抖: 在事件...

  • JS函数防抖

    JS 中的函数防抖 一、什么是函数防抖? 概念: 函数防抖(debounce), 就是指触发事件后,在 n 秒内函...

  • 防抖与节流

    1. 防抖函数 1.1 防抖定义: 函数防抖(debounce):当持续触发事件时(例如mousemove),一定...

  • 函数节流与函数防抖

    函数节流与函数防抖的区别JS魔法堂:函数节流(throttle)与函数去抖(debounce)函数的防抖与节流 自...

  • JavaScript中的防抖(debounce)和节流(thro

    防抖函数 节流函数

  • JS封装一个防抖函数与节流函数

    防抖函数 节流函数

网友评论

      本文标题:函数接口防抖

      本文链接:https://www.haomeiwen.com/subject/jjrcbrtx.html