首页 > 解决方案 > 如何从 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 中到达最后一行。

标签: angular.net-core

解决方案


不要订阅 observable 并且不要将结果存储在成员变量中。

只需将映射结果返回为可观察的,如下所示:

canActivate(...) {
    return this.corpService.geSession().pipe(
            map(data => {
                if (data == null)
                {
                    ...
                    return false;
                }
                else
                {
                    ...
                    return data[1] === 'true';
                }
            })
        )
}

推荐阅读