我是一个关于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);
"@angular/core": "13.3.0"
和"rxjs": "7.4.0"
。 - JRichardsz