Angular - 不响应http响应回调

时间:2018-03-26 23:05:12

标签: angular http callback

您好我正在尝试使用http请求的结果执行某些操作,但我的回调永远不会执行,我无法解决为什么...

我已按照此here上的part示例了解

这是我的代码:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import * as moment from "moment";
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/shareReplay';

@Injectable()
export class AuthdataService {
constructor(private http: HttpClient) {}

login(email: string, password: string) {

  return this.http
    .post("http://localhost:3000/user/login", {
      email,
      password
    })
    .do(res => this.setSession)
    .shareReplay();
  }

  private setSession(authResult) {
  console.log("Why am I not being hit???")
  const expiresAt = moment().add(authResult.expiresIn,'second');

  localStorage.setItem('id_token', authResult.idToken);
  localStorage.setItem("expires_at", JSON.stringify(expiresAt.valueOf()) );
  }  
}

更新了解决方案:

login(email: string, password: string) {

return this.http
  .post("http://localhost:3000/user/login", {
    email,
    password
  })
  .do(res => this.setSession(res))
  .shareReplay();   
  }

1 个答案:

答案 0 :(得分:2)

您期望正在创建的Observable序列为“热门”,而是“冷”。差异用elsewhere on the internet来描述,比我能管理得更好。

换句话说,.post在订阅之前实际上并没有做任何事情Reference

调用shareReplay不会订阅Observable,但只会确保一次只能创建对基础Observable的一个订阅。

因此,缺少的链接可能是您在.subscribe上创建的Observable