在我的angular 2应用程序中,我得到了方法:
myMethod(component: any): void {
let a = console.log('start');
if (this._something) {
// Here i got custom modal window
this._service.callModalWindow('message').subscribe(result => {
if (result === 'Confirm') {
let b = console.log('confirm);
}
}
}
let c = console.log('finish');
}
问题是:该方法调用console.log的方式不是我想要的,我想先获得console.log('first')
,然后在得到模式确认后获得console.log('confirm')
,然后获得最终console.log('finish')
;
现在我遇到这种情况,当我确认模态时,方法会先调用变量a
,然后依次调用c
和b
。
有人知道我如何解决这种情况吗?
答案 0 :(得分:1)
不是使用异步等待的最合适方法。但是如果你必须。使用toPromise
将可观察对象转换为Promise,因为异步等待需要Promise在幕后解决
async myMethod(component: any): void {
let a = console.log('start');
if (this._something) {
// Here i got custom modal window
let result = await this._service.callModalWindow('message').toPromise();
if (result === 'Confirm') {
let b = console.log('confirm);
}
let c = console.log('finish');
}