2017-07-24 102 views
0

我们需要在typescript中调用返回类型为void的方法,但类型脚本不应该继续执行下一行代码void方法执行完成。我们怎样才能做到这一点。Angular 2 typecript调用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"; 
      });  



    } 
+0

答案是让该方法返回一个可观察的,而不是void。目前它无法工作,因为错误消息的设置与您认为您设置的内容无关。 – jonrsharpe

+0

您应该在saveEventDetails()函数中返回一个observable,然后在closeWindow()上订阅它。 – invisible

+0

你在陈述结尾处忘了放'''。应该有'返回'值。无论如何,'close()'函数都不起作用,您必须将其删除。 –

回答

0

为什么你不订阅由该saveEventDetails返回的观察,()?

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"; 
    });  
} 
+1

如果我在this.saveEventDetails(“popup”)上订阅,我抛出属性'subscribe'虚空” – Pani

相关问题