【发布时间】:2019-10-31 11:41:06
【问题描述】:
我有这个功能,我想从一个特定的端点获取最喜欢的电影,使用 angular。从类方法中获取所有电影列表后,当我尝试使用该列表时,我看到该列表不可用。
这是我尝试过的。
import { Injectable } from '@angular/core';
import {HttpClient} from '@angular/common/http'
import {Observable} from 'rxjs'
import { map, tap } from 'rxjs/operators';
import { IMovie } from './welcome/welcome-page/movies-model';
@Injectable({
providedIn: 'root'
})
export class FavoriteMoviesService {
movieList: IMovie[];
constructor(private _http: HttpClient) {
}
getFavMovies(id: number) {
let getMovies = () => {
return this._http.get('../assets/movies.json').pipe(
tap(response => console.log(response))
).subscribe(response => response = this.movieList)
}
getMovies();
let chosenMovie = this.movieList? this.movieList.find(movie => movie.id == id): Array(null)
console.log(chosenMovie)
}
}
我真的不明白程序的流程,我认为在调用函数 getMovies() 时设置了 movieList 属性,但局部变量 selectedMovie 没有获得所需的值。 请对此行为进行任何解释?
【问题讨论】:
-
您的
getMovies函数是异步的,而您的chosenMovie同步执行,无需等待getMovies完成。因此你得到chosenMovieempty -
你正在丢弃响应,将
.subscribe(response => response = this.movieList)更改为.subscribe(response => this.movieList = response)
标签: javascript angular rxjs observable