angular - 如何从 Angular 7 同步调用 .Net Core 2.0 API
问题描述
我是一名学生,刚刚开始学习 Angular 7 和 .Net Core 2.0
我在 .Net Core API 的控制器中创建了一些会话,需要调用它们以实现一些有角度的路由保护,所以我在下图中创建了这个函数,它从 API 调用会话以检查是否允许路由或不在 Angular 中。
这就是我的控制器的样子
现在发生的事情是,当我打电话时它会碰到控制器,但是因为它是异步的,所以 Angular 的执行会继续进行,而不是首先等待来自 API 的数据,因为基于该数据,我canActivate()
在 Angular 中的函数将返回 true 或false,当数据被提取并存储在变量 my line no 中时。图像中的 38 已经执行,我默认设置为 false。
请帮助如何同步调用数据,以便首先从 API 中获取数据,然后在 Angular 中到达最后一行。
解决方案
不要订阅 observable 并且不要将结果存储在成员变量中。
只需将映射结果返回为可观察的,如下所示:
canActivate(...) {
return this.corpService.geSession().pipe(
map(data => {
if (data == null)
{
...
return false;
}
else
{
...
return data[1] === 'true';
}
})
)
}
推荐阅读
- java - 使用 Gson 将 JSON 文件解析为 java 对象
- dc.js - 减少大型数据集的 DOM 元素的策略
- autodesk-forge - Autodesk forge查看器设置工具栏按钮文本没有css
- c# - VS 不写入输出文件
- c# - 将字符串与类相关联,以便如果类作为泛型类型参数给出,我可以检索字符串
- python - TensorFlow:在训练时更改变量
- java - java - 如何在java中使用SequenceInputStream从两个不同的文件中读取两个对象
- search - 搜索结果转换中的多个索引不适用于 Kentico
- excel - 求解消除常数 K
- r - 将日期时间从 Excel 转换为 R