javascript-Angular 4/5中的事件处理程序性能问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Angular 4/5中的事件处理程序性能问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1973字,纯文字阅读大概需要3分钟。
内容图文
抱歉,如果我的问题很傻,但是我们在应用程序中遇到了延迟问题.
KEYPRESS事件处理程序是罪魁祸首.我们在整个应用程序中使用以下指令.它通过HostListener检查KeyPress.按下键时,此伪指令使用regexp检查值,并且如果condition为false则执行preventDefault.
private regexMap = { // add your own
'999': /^([0-9]){0,3}$/g,
'9999': /^([0-9]){0,4}$/g,
...
...
}
@HostListener('keypress', [ '$event' ])
public nInput(event: KeyboardEvent) {
// Allow Backspace, tab, end, and home keys
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
this.pattern = this.regexMap[this.validationFormat];
const current: string = this.el.nativeElement.value;
const next: string = current.concat(event.key);
if (next && !String(next).match(this.pattern)) {
event.preventDefault();
}
}
我不确定如何解决此问题. debounceTime是否可以解决此问题?我不确定如何在此方法中添加去抖动.请有人帮我解决这个问题.
解决方法:
解决了DebounceTime问题:)刚刚在帮助主题中添加了反跳时间.
基本上,当用户输入内容时,它会停止所有动作,然后将EVENT(按键值)发送给SUBJECT,并在主体反跳时间中等待300ms,然后进行功能测试
private keyPressed = new Subject();
private subscription: Subscription;
private pattern: RegExp;
private regexMap = { // add your own
'999': /^([0-9]){0,3}$/g,
'9999': /^([0-9]){0,4}$/g,
...
...
}
private specialKeys: string[] = ['Backspace', 'Tab', 'End', 'Home'];
constructor(private el: ElementRef) {
}
public ngOnInit() {
this.subscription = this.keyPressed.pipe(debounceTime(300)).subscribe(
(event) => this.checkRegExpression(event)
);
}
public ngOnDestroy() {
this.subscription.unsubscribe();
}
@HostListener('keypress', ['$event']) public nInput(event: KeyboardEvent) {
event.preventDefault();
event.stopPropagation();
this.keyPressed.next(event);
}
private checkRegExpression(event) {
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
this.pattern = this.regexMap[this.validationFormat];
const current: string = this.el.nativeElement.value;
const next: string = current.concat(event.key);
if (next && !String(next).match(this.pattern)) {
event.preventDefault();
}
}
内容总结
以上是互联网集市为您收集整理的javascript-Angular 4/5中的事件处理程序性能问题全部内容,希望文章能够帮你解决javascript-Angular 4/5中的事件处理程序性能问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。