Angular 11.x AbstractControl valueChanges rxjs 如何只取最后一个值的请求

发布于 2022-09-12 13:45:54 字数 870 浏览 19 评论 0

现在的代码为:
`

return new Promise((resolve) => {
  if (!control.value) {
    
    control.setErrors({namesUnion: true });
    return resolve({namesUnion: true });
  } else {
    control.valueChanges.pipe(throttleTime(1000),first()).pipe(mergeMap((value) => this.getResult(value))).subscribe(
      data => {
        console.log('[NamesUnionValidator-Directive]result value: '+data);
        control.setErrors(null);
        return resolve(null);
      },
      error => {
        let er:HttpErrorResponse = error as HttpErrorResponse;
        console.log('[NamesUnionValidator-Directive]error status: '+er.status);
        control.setErrors({namesUnion: true });
        return resolve({namesUnion: true });
      }
    );
  }
});

`

在输入框中输入:xiaofanku, 会发出9条请求,如下图:
image

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惜醉颜 2022-09-19 13:45:54

输入框触发的值变,用户随时可以重新输入,你告诉我怎么界定哪一个值是最后?一个永远都不会 complete 的 observable 哪里有最后的值。

你何不从交互的角度思考一下,你需要在什么时候触发请求,比如说失去焦点或者表单提交的时候?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文