Angular实现防抖和节流的示例代码

 更新时间:2024年02月20日 09:10:53   作者:crary,记忆  
这篇博客主要是详细介绍两种常用Angular实现防抖和节流的方法:使用RxJS操作符和使用Angular自带的工具,文中通过代码示例给大家讲解的非常详细,需要的朋友可以参考下

在Angular中实现防抖和节流的方法有多种,这篇博客主要是详细介绍两种常用的方法:使用RxJS操作符和使用Angular自带的工具。

  • 使用RxJS操作符实现防抖和节流:

     防抖(Debounce):

//简易版
import { debounceTime } from 'rxjs/operators';
input.valueChanges.pipe(
  debounceTime(300)
).subscribe(value => {
  // 执行搜索操作
});
 
 
//详细版
import { Component } from '@angular/core';
import { fromEvent } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
 
@Component({
  selector: 'app-debounce-example',
  template: '<input (input)="onInput($event)">'
})
export class DebounceExampleComponent {
  onInput(event: Event) {
    fromEvent(event.target, 'input')
      .pipe(
        debounceTime(300)
      )
      .subscribe(() => {
        // 执行输入框搜索操作
      });
  }
}
  • 节流(Throttle):
//简易版
import { throttleTime } from 'rxjs/operators';
scrollEvent.pipe(
  throttleTime(300)
).subscribe(() => {
  // 执行滚动操作
});
 
//详细版
import { Component } from '@angular/core';
import { fromEvent } from 'rxjs';
import { throttleTime } from 'rxjs/operators';
 
@Component({
  selector: 'app-throttle-example',
  template: '<div (scroll)="onScroll($event)">'
})
export class ThrottleExampleComponent {
  onScroll(event: Event) {
    fromEvent(event.target, 'scroll')
      .pipe(
        throttleTime(300)
      )
      .subscribe(() => {
        // 执行滚动操作
      });
  }
}
  • 使用Angular自带的工具实现防抖和节流:
  • 防抖(Debounce):
import { Component } from '@angular/core';
 
@Component({
  selector: 'app-debounce-example',
  template: '<input (input)="onInput($event)">'
})
export class DebounceExampleComponent {
  onInput(event: Event) {
    this.debounceSearch();
  }
 
  debounceSearch = this.debounce(() => {
    // 执行输入框搜索操作
  }, 300);
 
  debounce(func, delay) {
    let timer;
    return function() {
      clearTimeout(timer);
      timer = setTimeout(() => {
        func.apply(this, arguments);
      }, delay);
    };
  }
}
  • 节流(Throttle):
import { Component } from '@angular/core';
 
@Component({
  selector: 'app-throttle-example',
  template: '<div (scroll)="onScroll($event)">'
})
export class ThrottleExampleComponent {
  onScroll(event: Event) {
    this.throttleScroll();
  }
 
  throttleScroll = this.throttle(() => {
    // 执行滚动操作
  }, 300);
 
  throttle(func, delay) {
    let canRun = true;
    return function() {
      if (!canRun) return;
      canRun = false;
      setTimeout(() => {
        func.apply(this, arguments);
        canRun = true;
      }, delay);
    };
  }
}

以上就是Angular实现防抖和节流的示例代码的详细内容,更多关于Angular防抖和节流的资料请关注脚本之家其它相关文章!

相关文章

  • AngularJs Forms详解及简单示例

    AngularJs Forms详解及简单示例

    本文主要介绍AngularJs Forms,这里整理了相关资料及简单示例代码,有需要的朋友可以参考下
    2016-09-09
  • angular6.x中ngTemplateOutlet指令的使用示例

    angular6.x中ngTemplateOutlet指令的使用示例

    本篇文章主要介绍了angular6.x中ngTemplateOutlet指令的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • AngularJS使用指令增强标准表单元素功能

    AngularJS使用指令增强标准表单元素功能

    这篇文章主要介绍了AngularJS使用指令增强标准表单元素功能,包括数据绑定、建立模型属性、验证表单等,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • angularjs实现猜数字大小功能

    angularjs实现猜数字大小功能

    这篇文章主要为大家详细介绍了angularjs实现猜数字大小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • AngularJS基础学习笔记之表达式

    AngularJS基础学习笔记之表达式

    AngularJS表达式用于应用程序数据绑定到HTML。表达式都写在双括号就像{{表达式}}。表达式中的行为跟ng-bind指令方式相同。 AngularJS应用表达式是纯javascript表达式,并输出它们被使用的数据在那里。
    2015-05-05
  • AngularJS 监听变量变化的实现方法

    AngularJS 监听变量变化的实现方法

    今天小编就为大家分享一篇AngularJS 监听变量变化的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 使用AngularJS编写较为优美的JavaScript代码指南

    使用AngularJS编写较为优美的JavaScript代码指南

    这篇文章主要介绍了使用AngularJS编写较为优美的JavaScript代码指南,包括控制器和封装等进阶技巧上的编程建议,倾力推荐!需要的朋友可以参考下
    2015-06-06
  • Angularjs 事件指令详细整理

    Angularjs 事件指令详细整理

    这篇文章主要介绍了Angularjs 事件指令详细整理的相关资料,这里对AngularJS 的所有的事件指令一一做出详细介绍,需要的朋友可以参考下
    2017-07-07
  • 浅谈AngularJS中$http服务的简单用法

    浅谈AngularJS中$http服务的简单用法

    这篇文章主要介绍了浅谈AngularJS中$http服务的简单用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 详解Webstorm 下的Angular2.0开发之路(图文)

    详解Webstorm 下的Angular2.0开发之路(图文)

    这篇文章主要介绍了详解Webstorm 下的Angular2.0开发之路(图文) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论