Angular6-等待订阅完成

时间:2019-08-01 17:33:44

标签: typescript angular6 angular-httpclient

我有一个组件,服务中的方法是:

getResults(option:any) {
    //forming the url and patchModel
    return this.http.patch(url,patchModel,option);
}

组件文件如下所示:

onClickMenu(option: any): void {  //function doesnt return anything
    this.service.getResults(option).subscribe(result => {
        this.menu = result.menu;
    });
}

现在我获得了正确的值,但是在打字稿文件中的onClickMenu之后,还有其他方法可以在this.menu填充之前执行。由于this.menu中的值是其他方法所需要的,因此无法执行。我要等到this.menu得到正确的值。

在没有异步/承诺的情况下,我该怎么做?我热衷于使用可观察的。

1 个答案:

答案 0 :(得分:0)

this.menu之前被调用的“函数”应该从finally块中调用...在下面的调用中检查我的评论

this.service.getResults(option).subscribe(
    result => { this.menu = result.menu; }
    () => { /* call your function(s) here... inside the finally block */}
);

this.menu = result.menu完成后,此finally块将执行,您将获得更新的菜单。