如何解决为什么我不能将我的get请求保存在angular中?
你好,我是从角度入手的,我不知道为什么这没有用。
很简单,我发出一个get请求,我尝试保存数据,但是我做不到,我向您展示代码。
nickName.contains
这是我可以从浏览器中看到的请求中获得的json
import { Component,OnInit,ViewEncapsulation } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-profile',templateUrl: './profile.component.html',styleUrls: ['./profile.component.scss'],encapsulation: ViewEncapsulation.None
})
export class ProfileComponent implements OnInit {
userinfo;
constructor(private readonly http: HttpClient) {
}
ngOnInit(): void {
this.http.get<any>('/api/v0/user/userinfo?username=test').subscribe(data => {
this.userinfo= data;
});
console.log("get: " + this.getuser);
}
}
但是控制台显示的是
{"id":2,"username":"test","email":"test@test.com"}
帮助!
解决方法
首先,正如Luis在其评论中提到的那样,您需要在console.log
语句中访问正确的变量。
第二,您的console.log
放在错误的位置。由于放置位置的原因,它会在API调用返回之前触发。
尝试一下:
ngOnInit(): void {
this.http.get<any>('/api/v0/user/userinfo?
username=test').subscribe(data => {
this.userinfo= data;
console.log("get: " + this.userinfo);
});
}
原因是API调用需要时间才能响应,并且代码在下一条语句console.log上继续进行,这意味着this.userdata尚未设置为任何值,因为尚未从服务器返回任何数据
您将需要进一步了解异步和同步功能。这是Web应用程序中的重要概念。
,这是我为说明异步和同步而创建的stackblitz上的链接:
https://stackblitz.com/edit/angular-ivy-teoitv?file=src/app/hello.component.ts
基本上,史蒂夫为您介绍了这种情况...
基本上,端点响应中的“延迟”会为您返回这个未定义的值,但这可以在从服务器接收响应时进行加载处理,这是一个想法。
另一个提示,您可以使用rxjs“ tap”在一个可观察对象内进行console.log。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。