繁体   English   中英

Angular 2打字稿调用void方法,等待该方法执行完成,然后再执行下一步

[英]Angular 2 typescript call a void method wait for that method executing to complete before executing next step

我们需要在T​​ypescript中调用返回类型为void的方法,但是在void方法执行完成之前,类型脚本不应继续下一行代码。 我们如何实现这一目标。

在下面的示例中,我们必须从closeWindow调用saveEventDetails,但是在关闭的窗口中var win = window.open(“ about:blank”,“ _self”); win.close(); 在saveEventDetails方法执行完成之前不应执行。

EX: -

 saveEventDetails(buttonClick: string = "") {        
        this.eventForm.markAsUntouched(false);
        this.eventForm.value.claimNumber = this.appContext.claimNumber;
        this.eventsService.patch(this.eventForm.value).subscribe(res => {
            this.loadUserTrackingDetails();
            this.userTrackingService.saveUserTrackingDetails(this.userTrackingModel).subscribe(r => {
                if (buttonClick == "") {
                    this.showSuccess();
                }
                return Observable.of();
            });
        }, (errResp: any) => {
        this.errorMessage = "Unable to load EVENT, invalid user or claim number";
            return Observable.of();
        });
    }




    closeWindow() {
        this.eventForm.value.cmResidentStateLicensed = false;
        Observable.create((observer: Observer<any>) => {
            this.saveEventDetails("popup")
            var v = true;
        })            
            .subscribe(data => {                
                var win = window.open("about:blank", "_self");
                win.close();
            },
            (errResp: any) => {
                this.errorMessage = "Unable to Save EVENT, Please try after soemtime";
            });      



    }

为什么不订阅saveEventDetails()返回的Observable呢?

closeWindow() {
    this.eventForm.value.cmResidentStateLicensed = false;
    this.saveEventDetails("popup").subscribe(data => {                
        var v = true;
        var win = window.open("about:blank", "_self");
        win.close();
    },
    (errResp: any) => {
        this.errorMessage = "Unable to Save EVENT, Please try after soemtime";
    });      
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM