如何在Angular 6的组件中的promise块之外获取变量?
例如
items:string[]=[];
ngOnInit{
const url='SOME URL';
const promise = this.apiService.post(url);
//Response
promise.then(response => {
this.items.push('abc');
this.items.push('def');
});
this.items.forEach(item=>{
alert(item);
});
}
我希望该应用程序对项目数组的内容发出警报
答案 0 :(得分:2)
完成时
this.items.forEach(item=>{
alert(item);
});
items数组为空。
您需要将此代码放入
promise.then(response => {
this.items.push('abc');
this.items.push('def');
this.items.forEach(item=>{
alert(item);
});
});
或者您可以使用Observables知道诺言何时结束并执行foreach,您需要执行以下操作:
private subjectItems = new Subject<any>();
ngOnInit{
this.subjectItems.asObservable().subscribe(o => {
this.items.forEach(item=>{
alert(item);
});
});
const url='SOME URL';
const promise = this.apiService.post(url);
//Response
promise.then(response => {
this.items.push('abc');
this.items.push('def');
this.subjectItems.next(this.items)
});
}
答案 1 :(得分:0)
这似乎是一个异步问题,我的意思是在从服务中获取数据之前就显示了警报,因此可以选择使用.ToList()
和Observables
。它应该等到获取数据后再使用。
此外,您可以尝试在此medium article之后使用subscribe