【问题标题】:Angular 6 wait for subscribe to finishAngular 6等待订阅完成
【发布时间】:2019-11-07 20:01:18
【问题描述】:

我有这样的功能:

getNumber(value) {
    this.myService.getApi(value).subscribe(data => {
        this.myVariable = data;
    });
}

我在其他函数中调用该函数如下:

set() {
    if (this.value == 1) {
        this.getNumber(firstNumber)
        this.newVariable = this.myVariable;
    } else {
        this.getNumber(secondNumber)
        this.newVariabe = this.myVariable + 1;
    }
};

this.value 正在从其他函数获取。问题是this.newVariable 是空的。我确定这是因为在我尝试访问this.Variable之前订阅尚未完成

在我做任何其他事情之前有什么方法可以等待订阅完成?

【问题讨论】:

标签: angular rxjs


【解决方案1】:

只需从 getNumber 返回一个 Observable 并订阅它。

您还可以将管道添加到 getNumber,以便它处理存储数据并返回一个可订阅的 Observable。

getNumber(value) {
    return this.myService.getApi(value).pipe(tap(data => {
        this.myVariable = data;
    }));
}

在你的设置方法中

set() {
    if (this.value == 1) {
      this.getNumber(firstNumber).subscribe(() => {
        this.newVariable = this.myVariable;
      });
    }
    else {
      this.getNumber(secondNumber).subscribe(() => {
        this.newVariabe = this.myVariable + 1;
      });
   }
};

【讨论】:

    猜你喜欢
    • 2019-03-24
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多