angular - Angular 5服务中的同步http获取请求?
问题描述
我有一个非常大的项目,其中包含很多组件和服务。
我想构建另一个所有组件都使用的服务。该服务将调用 http get 请求,该请求检索组件的顺序(如配置),并据此在页面上对组件进行排序。我想让调用同步,以便在检索到订单之前不会加载组件。我想这样做是因为我不想在加载组件后闪烁显示。基本上就像一个同步的ajax调用。
我的代码如下
服务
import { Injectable } from "@angular/core";
@Injectable()
export class ConfigService {
constructor() {
}
getUserConfigFromDB() {
//http request
;
}
}
零件
import { Injectable } from "@angular/core";
import {ConfigService} from "../app/services/ConfigService"
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'app';
constructor(private configService: ConfigService) { }
ngOnInit() {
this.configService.getUserConfigFromDB()
}
}
该服务将被很多组件使用。
先感谢您。
EDIT1:我想我不清楚。除了调用 getUserConfigFromDB() 方法外,我无法更改组件中的任何内容。我正在寻找 ajax(async:false) 的确切替代方案。我希望页面冻结,直到我得到 api 的响应。
解决方案
无需使用同步 http 请求,只需将 http 请求放入解析器即可。在解析器获取数据之前,页面不会加载,因此您不会得到您正在谈论的闪烁。
推荐阅读
- javascript - 当我仅将边框半径应用于视图的一侧时,React Native 中出现奇怪的变色
- git - GitHub:我可以查看我是否对分叉进行了更改吗?
- php - 本地环境中drupal 8的目录权限设置
- python - 重复的行合并在一行中,在熊猫中添加新列
- html - 监控本地文件并自动上传到 Google Cloud Bucket
- swift - 斯威夫特:NSBezier
- html - 将 HTML 内容保存到数据库是个好主意吗?
- html - 如何向 CSS 生成的箭头添加框阴影?
- python - 如何打印 zmq.REQ 工作人员的回溯和异常?
- c# - Xamarin 网格以适应整个屏幕错误循环