【发布时间】:2018-01-10 10:40:07
【问题描述】:
我是 Angular 应用程序的新手。我不完全了解subscribe 的工作原理。我目前的障碍是我不明白为什么console.log("B") 在console.log("A") 之前执行,因此呈现一个空数组的结果(请参阅console 输出的链接)。
我尝试将所有代码放入带有async/await 的函数中以等待该函数。我不明白为什么它不起作用。
在这种情况下等待订阅的最佳方式是什么?
console.log("B") 必须在console.log("A") 之后执行。
this._roleService.getRoleTypes(this.token).subscribe(
response => {
if(response.status != "error" && response.code != 400){
let _roleTypes:Array<RoleType> = new Array<RoleType>();
_roleTypes = new Array<RoleType>();
response.data.forEach(rt => {
let roleType:RoleType = new RoleType(
rt.id,
rt.name
);
_roleTypes.push(roleType);
});
console.log("A");
console.log(_roleTypes);
this.roleTypes = _roleTypes;
}
else{
this._loginService.destroySession();
}
},error => {
this.errorMessage = <any>error;
if(this.errorMessage != null){
console.log(this.errorMessage);
alert("Petition Error");
}
}
);
console.log("B");
console.log(this.roleTypes);
【问题讨论】:
标签: javascript angular typescript