小编Jon*_*Doe的帖子

角度如何等待订阅

我是 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);
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

13
推荐指数
4
解决办法
5万
查看次数

标签 统计

angular ×1

javascript ×1

typescript ×1