javascript - Angular 6:async await some variable got it variable
问题描述
在我的Angular 6应用程序下,我有一个变量“permittedPefs”,它在 HTTP 调用(异步)后获取值
@Injectable()
export class FeaturesLoadPermissionsService {
permittedPefs = [];
constructor() {
this.loadUserPefsService.getUserRolePefs(roleId)
.subscribe(
(returnedListPefs) => {
this.permittedPefs = returnedListPefs;
},
error => {
console.log(error);
});
}
}
在另一种方法中,我使用相同的变量:allowedPefs
但由于它最初是空的,并且在一段时间后它得到了它的价值,所以我需要等待它重新使用它。
我尝试使用async-await,我的目的是等待allowedPefs获得对象值
async checkPefPresence(pefId) {
const listPefs = await this.permittedPefs
}
如何解决?
解决方案
使用行为主题
@Injectable()
export class FeaturesLoadPermissionsService {
permittedPefs: BehaviorSubject<any[]> = new BehaviorSubject([]);
constructor() {
this.loadUserPefsService.getUserRolePefs(roleId)
.subscribe((returnedListPefs) => {
this.permittedPefs.next(returnedListPefs);
},
error => {
console.log(error);
});
}
}
然后你在哪里检查它(完成后记得取消订阅)
如果它必须是异步的,你可以像下面那样做
async checkPefPresence(pefId): Promise {
return new Promise((resolve, reject) => {
this.featuresLoadPermissionsService.permittedPefs.subscribe(listPefs => {
//handle whatever check you want to do here
resolve();
},reject);
})
推荐阅读
- angular - ASP.NET Core UTC 时间到本地
- google-apps-script - Google表格脚本:将所有命名范围输出到单元格
- amazon-web-services - Dynamodb - 如何选择合适的 GSI 和 LSI
- python - 如何使用固定到 Thud 的 Yocto 升级 Python?
- angular - 带有多个选项的角度材料选择下拉菜单不隐藏在对话框中
- python - 用文本内容谷歌驱动器api创建一个新文件?
- python - 如何打印具有重复字符的字符串?
- pandas - 迭代数据框列的多个操作(应用函数?)
- java - 如何检查 int 是否包含特定数字?
- node.js - 如何获取代表任何一组 API 方法的 Typescript 类型?