我试图在subscribe方法中实例化一个类变量。
class Emp{
val : Array<EmpClass> =[];
getEmp() : EmpClass[] {
this.http.get<EmpMyClass[]>(this.targetURL).subscribe(data => this.val = data);
alert(this.val.count)
return this.val;
}
}
此方法从服务器检索数据(json对象列表)。当按钮&#34;检索&#34;单击并在UI上呈现列表中的所有对象。 我有另一种更新数据库的方法(添加新员工对象)。
期望 - &gt;我添加了一个员工对象。点击&#34;检索&#34;后,更新后的结果应显示在屏幕上。
实际行为 - &gt;如果我点击&#34;检索&#34;第一次呈现0结果(因为列表为空,我认为方法在订阅调用完成之前返回列表)。如果我点击&#34;检索&#34;第二次(在1秒的间隙之后),呈现正确的结果。
有没有办法可以确保只有在订阅完成后才返回列表,即第一次点击&#34;检索&#34;按钮。
注意:我也尝试了另一种方式
getEmp() {
let v: Array<EmpMyClass> = [];
this.http.get<EmpMyClass[]>(this.targetURL).subscribe(data => v = data , () => console.log(), () => this.meth(v));
}
meth(em: EmpMyClass[]) {
this.val = em;
}
getVal(): EmpMyClass[] {
return this.val;
}
我首先调用getEmp()
,假设它将实例化val
变量,然后调用getVal()
以获取更新列表,但结果仍然相同。
我已经阅读了类似的帖子,但仍然无法克服这种情况。