【发布时间】:2019-09-01 08:13:44
【问题描述】:
我有这样的事情
getFieldsRemote(){
let fields: FormfieldBase<any>[] = [];
this.http.get('http://localhost:8080/api/getFields').subscribe(
data =>{
// code to push objects from data to fields variable declared above
}
}
)
return fields;
}
现在我面临的问题是,每当我从其他组件调用此 getFieldsRemote() 方法时,我都会得到一个空白数组。
我知道发生这种情况是因为 subscribe 方法是异步的,因此它在后台工作,并且控件在执行 subscribe 内的代码部分之前到达 return 语句。但是,当订阅方法完成时,我需要这个函数以某种方式返回数据。订阅组件端的数据不是一种选择。请告诉我这里的解决方案是什么。
【问题讨论】:
-
订阅组件端的数据不是一种选择:太糟糕了,因为这正是解决方案。您的方法应该返回一个 Observable
[]>,并且组件(或其视图,通过异步管道)应该订阅它。为什么要排除正确的做法?
标签: angular typescript asynchronous