http-client在响应到达时调用函数

时间:2018-03-08 23:23:40

标签: javascript angular rxjs

让我们说我有一个服务正在向我的API发送一个帖子请求,一旦响应到了,我就想要一个自定义函数作为过程的一部分执行。

private

我尝试过使用管道运算符,但出于某种原因,它并没有向返回的promise发送错误。

public signin(){
  return this.http.post<any>(`${env.API_URL}/user/signin`, { username: user.username, password: user.password }).toPromise();
}

2 个答案:

答案 0 :(得分:2)

一种选择是使用这样的代码:

getMovies(): Observable<IMovie[]> {
    return this.http.get<IMovie[]>(this.moviesUrl).pipe(
        tap(data => console.log(JSON.stringify(data))),
        catchError(this.handleError)
    );
}

然后,您可以在自来水中添加自定义功能。

所以你的代码看起来更像是这样:

public signin() {
  return this.http.post<any>(`${env.API_URL}/user/signin`, { username: user.username, password: user.password }).pipe(
    tap(data => this.customFunction(data)),
    catchError(error => console.log(error))
  );
}

答案 1 :(得分:1)

您可以使用以下代码执行此操作:

public signin() {
  return this.http.post<any>(`${env.API_URL}/user/signin`, { username: user.username, password: user.password })
  .toPromise()
  .then((data) => {
    this.customFunction(data)
  })
  .catch(this.handleError);
}

然后只需定义一个句柄错误函数,或者如果你愿意,可以像使用数据一样使用lambda函数