angular - 从 http.get 获取数据并将其影响到对象
问题描述
当我运行这段代码时,我得到了我的 deciplines 数组充满了数据
onGetDescs(descipline:string){
let rep =this.http.get("http://data");
let result: any;
rep.subscribe( data => {
this.desciplines = data as Descipline[];
result = this.desciplines.filter(function(d) {
return d.name === descipline;
});
this.desciplines = result as Descipline[];
console.log(this.desciplines);
});
return this.desciplines;
}
但是当我跑步时,我想使用它或只是这样做
onGetDescs(descipline:string){
let rep =this.http.get("http://45.80.149.82:8080/ctp-api/api/disciplines");
let result: any;
rep.subscribe( data => {
this.desciplines = data as Descipline[];
result = this.desciplines.filter(function(d) {
return d.nom === descipline;
});
this.desciplines = result as Descipline[];
});
console.log(this.desciplines);
return this.desciplines;
}
我得到一个空数组
我真的需要知道发生了什么 ps:我是 Angular 新手
解决方案
在第一个示例中,您在 api 调用发回数据后打印数据。(异步操作后)
但在第二种情况下,您在调用 api 之后打印数据。此时 api 还没有发回数据,你将有一个空数组。
我记得 js 内容在单个线程上运行(很高兴是错误的),所以 API 响应(内部内容.subscribe(...)
的执行)将在onGetDescs
.
推荐阅读
- python - Python:使用优化编译并执行
- android - 由 java.lang.SecurityException 引起:uid ... 无法显式添加以下类型的帐户:... Android P 和 Android 10
- javascript - 如何更新从 javascript 中的 fs 读取的 fs 中的 json 值?
- c# - 如何在 WinForms DataGrid 中绘制所选行的边框?
- flutter - 可迭代
模拟 - ios - 如何在 SwiftUI iOS 中禁用列表滚动?
- android - Gradle 同步失败:包装器属性文件中没有指定键“distributionUrl”的值
- c# - 删除按钮在列表视图中删除,但不在对象列表中
- java - 获取异常“org.apache.maven.surefire.booter.SurefireBooterForkException: . VM crash or System.exit called?”
- php - 一旦您启动 phpmyadmin XAMPP,MySQL 就会停止