小编Him*_*tal的帖子

setInterval vs Observable的timer方法,最好创建计时器

我必须在Angular中创建一个计时器,目前我正在通过Observable进行如下操作:

  timer: Observable<any> = Observable.timer(0, 990);
  timerSubscription: Subscription;

  this.timerSubscription = this.timer.subscribe((value) => {
    this.tickerFunc();
  }); // inside ngOnInit

  tickerFunc () {
    this.timeNow++;

    this.timeNowInMinutes = Math.floor(this.timeNow / 60);

    if (this.timeNow >= this.TimeLimit) {
      this.finishtest();
    }
  }
Run Code Online (Sandbox Code Playgroud)

所以我在这里有两个问题:

1)使用Observable的计时器是否不错,还是应该使用setInterval()方法,还是两者具有相同的性能?

2)如您所见,每次计时器计时时,我都必须进行两次计算:

第一:我必须将秒转换为分钟。

第二:我必须检查计时器是否已达到时间限制,如果是,请取消计时器的订阅。

我的两个问题都与使计时器尽可能准确有关。(尽可能接近实时)。正如您所注意到的,我给了tim间隔990毫秒而不是1000毫秒,以弥补由于tickerFunc()主体内部的计算而发生的时间损失。

timer observable angular

5
推荐指数
1
解决办法
4380
查看次数

Angular自定义异步验证器保持待定状态

我有一个自定义验证器,用于验证用户电子邮件是否唯一。

我已经搜索了关于stackoverflow和Internet的相关主题,但是没有帮助

当我以表单形式发送输入(发送请求)时,请求保持待处理状态且无法解析。

我已经在邮递员中测试了后端,它的工作正常,问题出在客户端或角度。

验证功能如下:

emailUniqueValidator (control: AbstractControl): Promise<{[key: string]: any}> | Observable<{[key: string]: any}> {
    return new Promise((resolve, reject) => {
      this.userService.checkEmailUnique(control.value).subscribe((response: Response) => {
        const body = response.json();
        if (body.found === false) {
          resolve(null); // email is unique
        } else {
          reject({emailUniqueValidator: true}); // email is not unique
        }
      });
    });
  }
Run Code Online (Sandbox Code Playgroud)

当我更改窗体控件的值时,将显示挂起的类,但它永远存在,而不是被解析。

我有如下电子邮件表单控件:

'email': new FormControl('', [
        Validators.required,
        Validators.email
      ], this.emailUniqueValidator.bind(this)
),
Run Code Online (Sandbox Code Playgroud)

我的用户服务如下:

checkEmailUnique (email: string): Observable<Response> {
    return this.http.post('http://localhost:3000/user/email', {email}, { withCredentials: true });
  }
Run Code Online (Sandbox Code Playgroud)

为什么验证器无法及时解决并永远待命? …

validation asynchronous angular

4
推荐指数
2
解决办法
2711
查看次数

标签 统计

angular ×2

asynchronous ×1

observable ×1

timer ×1

validation ×1