Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步Http请求_Javascript_Node.js_Angular - Fatal编程技术网

Javascript 异步Http请求

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

我正在使用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.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把可观察的换成可观察的