Javascript 异步Http请求
我正在使用angular 6,现在我正在以这种方式更新我的资源距离Javascript 异步Http请求,javascript,node.js,angular,Javascript,Node.js,Angular,我正在使用angular 6,现在我正在以这种方式更新我的资源距离 this.user = api.getUser(); public getUser(): User { const myHeader = new HttpHeaders({ 'Authorization': 'Basic ' + this.session.getAccessToken(), }).append('Content-Type', 'application/json'); this.http.ge
this.user = api.getUser();
public getUser(): User {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
}).append('Content-Type', 'application/json');
this.http.get < User > (API_URL + '/users', {
headers: myHeader
})
.pipe(
catchError(this.handleError('get-user', [])))
.subscribe((response) => {
return <User > response;
});
return null;
}
我的问题是我的响应firse返回null,然后返回我的响应istance。。我怎样才能提供解决方案呢
谢谢您需要做的是异步设置this.user的值。您不应该在getUser方法中订阅http调用,而应该从该方法返回可观察的。它看起来像这样:
public getUser(): Observable<User> {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
}).append('Content-Type', 'application/json');
return this.http
.get<User>(API_URL + '/users', {headers: myHeader})
.pipe(
catchError(this.handleError('get-user', []))
);
}
api.getUser().subscribe(user => this.user = user);
public getUser(): Observable<User> {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
}).append('Content-Type', 'application/json');
return this.http.get<User>(API_URL + '/users', {headers: myHeader})
.pipe(
catchError(this.handleError('get-user', [])));
}
getUser().subscribe((user) => this.user = user);
public getUser(): Observable<User> {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
})
.append('Content-Type', 'application/json');
return this.http.get<User>(API_URL + '/users', { headers: myHeader })
.pipe(
catchError(this.handleError('get-user', []))
);
}
希望有帮助 您的getUser方法应该返回一个可观察的。大概是这样的:
public getUser(): Observable<User> {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
}).append('Content-Type', 'application/json');
return this.http.get<User>(API_URL + '/users', {headers: myHeader})
.pipe(
catchError(this.handleError('get-user', [])));
}
getUser().subscribe((user) => this.user = user);
public getUser(): Observable<User> {
const myHeader = new HttpHeaders({
'Authorization': 'Basic ' + this.session.getAccessToken(),
})
.append('Content-Type', 'application/json');
return this.http.get<User>(API_URL + '/users', { headers: myHeader })
.pipe(
catchError(this.handleError('get-user', []))
);
}
返回null,然后返回结果。删除返回空;它会很好的工作。你也不应该订阅这个服务。您应该删除.subscribe并添加并返回this.http.get。。。并且订阅了一个组件。它说我必须返回一些东西…@AlesandroGiordano在上面更新了我的答案。如果你对angular不熟悉,请看一看:类型Observable不可分配给Observable请帮助我,我不太熟悉angular@AlesandroGiordano把可观察的换成可观察的