我们需要在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";
});
}
答案是让该方法返回一个可观察的,而不是void。目前它无法工作,因为错误消息的设置与您认为您设置的内容无关。 – jonrsharpe
您应该在saveEventDetails()函数中返回一个observable,然后在closeWindow()上订阅它。 – invisible
你在陈述结尾处忘了放'''。应该有'返回'值。无论如何,'close()'函数都不起作用,您必须将其删除。 –