在Angular 6中等待订阅完成可以通过使用rxjs库中的Observable对象的toPromise()方法来实现。以下是一个示例代码:
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Component({
selector: 'app-example',
template: `
{{ data }}
`
})
export class ExampleComponent {
data: any;
constructor(private http: HttpClient) {}
getData() {
this.getDataFromServer()
.toPromise()
.then((res) => {
this.data = res;
console.log('订阅已完成');
})
.catch((err) => {
console.error(err);
});
}
getDataFromServer(): Observable {
return this.http.get('https://api.example.com/data');
}
}
在上面的例子中,我们首先使用HttpClient从服务器获取数据的方法getDataFromServer()
返回一个Observable对象。在getData()
函数中,我们调用getDataFromServer()
方法并使用toPromise()
将Observable对象转化为Promise对象。然后,我们可以使用Promise的.then()
方法来处理订阅完成后的数据,或使用.catch()
方法来处理错误。
在模板中,我们使用一个按钮来触发getData()
方法,并将获取到的数据显示在div中。
请注意,为了使用HttpClient,你需要在你的模块中导入HttpClientModule。