Angular ngOnInit()并行运行吗?
在我的Angular项目中,我从Angular ngOnInit()并行运行吗?,angular,ngoninit,Angular,Ngoninit,在我的Angular项目中,我从ngOnInit()调用方法ConnectToHueBridge()和listAllGoups()。在我看来,这两种方法将并行执行。但是我需要先运行ConnectToHueBridge(),然后运行listAllGoups()。我该怎么做 var MyHue = new huepi(); @Component({ selector: 'my-app', template: ` <h1>Hello {{name}}</h1> <di
ngOnInit()
调用方法ConnectToHueBridge()
和listAllGoups()
。在我看来,这两种方法将并行执行。但是我需要先运行ConnectToHueBridge()
,然后运行listAllGoups()
。我该怎么做
var MyHue = new huepi();
@Component({
selector: 'my-app',
template: `
<h1>Hello {{name}}</h1>
<div>
<ul>
<li *ngFor="let group of lightgroups">
{{group}}
</li>
</ul>
</div>
<Button (click)="listAllGroups()"> Get Groups</Button>`,
})
export class AppComponent {
name = 'Angular';
lightgroups: string[] = [];
constructor(){
}
ngOnInit(){
this.ConnectToHueBridge(MyHue);
this.listAllGroups();
}
listAllGroups(){
for(var g in MyHue.Groups){
this.lightgroups.push(g);
}
console.log("done loading groups");
}
ConnectToHueBridge(MyHue:any){
//do some stuff
}
}
}
var MyHue=new huepi();
@组成部分({
选择器:“我的应用程序”,
模板:`
你好{{name}
-
{{group}}
获取组“,
})
导出类AppComponent{
名称='角度';
光组:字符串[]=[];
构造函数(){
}
恩戈尼尼特(){
这个。连接到Huebridge(MyHue);
这个.listAllGroups();
}
listAllGroups(){
for(MyHue.Groups中的变量g){
这个。光组。推(g);
}
控制台日志(“完成加载组”);
}
连接到Huebridge(MyHue:any){
//做点什么
}
}
}
如果我点击按钮来执行这个方法,一切都很好。
如何在每个方法之后执行它们?您必须使它们可见
ConnectToHueBridge(MyHue:any): Observable<any> {
//do some stuff
return Observable.of(true);
}
这对我不起作用,还是一样的问题。我在
ConnectToHueBridge()
方法中有一些console.log(),在listAllGroups()
方法中有一个console.log(),但浏览器控制台中的输出是混合的。首先应该有来自connectToHueBridge()
的所有日志,然后是来自listalgroups()
的所有日志,因此我知道数据已经准备好在HTML中显示。如果我再次点击按钮执行listAllGroups()
,数据将以HTML格式显示。你还有其他想法吗?我发现执行listAllGroups()
时,MyHue
对象还没有准备好,因此它跳过for循环,只显示console.log()在HTML显示后,我再次点击按钮执行listAllGroups()
,for循环运行,内容将显示在HTML中。您还有其他解决方法吗?很抱歉,回答延迟,我国的母亲节。很明显:如果你的问题是MyHue对象,你不应该检查你是否有一个有效的对象吗?谢谢你进一步的帮助。我编辑了这部分:listAllGroups(){console.log(MyHue.Groups);for(MyHue.Groups中的var g){//MyHue.Groups返回一个数组console.log(g);this.lightgroups.push(g);}console.log(“完成加载组”);}
第一次console.log(MyHue.Groups)返回一个空数组。如果我再次手动执行它,它将提供我需要的元素。MyHue对象是用另一个JS库的实例声明的,如下所示:var MyHue:any=new huepi()代码>
ngOnInit() {
this.ConnectToHueBridge('xxx').subscribe(data => {
// data = true, you can change it in your function
this.listAllGroups();
});
}