我有类似的功能
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
在执行其他任何操作之前,有什么方法可以等待订阅完成吗?
答案 0 :(得分: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;
});
}
};