首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何订阅函数中的可观察对象

如何订阅函数中的可观察对象
EN

Stack Overflow用户
提问于 2021-04-30 01:58:26
回答 2查看 27关注 0票数 1

我在我的angular应用程序中有一个函数,当用户在文本框中输入一些数据以根据API验证数据时,该函数会被调用。除了对API的调用引起了我的问题之外,我得到了fin的工作。在我的旧代码中,我使用了promises,它工作得很好,但我正在尝试使用observable,这给我带来了问题。

下面是我调用的服务的代码。

代码语言:javascript
运行
复制
  validateUsername(username: string): Observable<IAPIResponse> {
    const requestUrl = `/user/validateUserName/${username}`;
    return this.httpservice.get<IAPIResponse>({
      endpoint: this.baseUrl + requestUrl,
      params: {}, })
      .pipe(
        map(result => result as IAPIResponse),
        tap(result => console.log(result.Data))
   );

我的函数看起来像这样..

代码语言:javascript
运行
复制
userNameAvail?: Observable<any>;

  validateUsername(event: any){

    console.log('New Username : ' + event.target.value);
    this.userNameAvail = this.userservice.validateUsername(event.target.value);
    console.log(this.userNameAvail);
  })

因此,我的问题是,要正确订阅该可观察对象并访问函数中的数据,我会遗漏什么。

EN

Stack Overflow用户

发布于 2021-04-30 02:01:24

代码语言:javascript
运行
复制
 private subscriptionValidateUserName : Subscription;      

 validate(event: any){

    console.log('New Username : ' + event.target.value);
    this.subscriptionValidateUserName = this.userservice.validateUsername(event.target.value).subscribe( data -> {
     console.log(data);
    });;
  })

订阅后,您不能持有可观察对象。

你可以持有的是一个订阅,如果你不想稍后被意外触发,那么当你完成某件事情时,取消订阅是很重要的。如果您想取消订阅,那么只需执行this.subscriptionValidateUserName.unsubscribe();

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67322759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档