2017-10-10 72 views
0

我遵循英雄之旅指南,但已决定观察结果比承诺更好,但我在实施它们时遇到问题。将承诺信息转换为可观察

这里是我的食谱服务:

import { of } from 'rxjs/Observable/of'; 
... 
    getRecipes(): Observable<Recipe[]> { 
    return of(RECIPES); 
    } 

    getRecipe(id: number): Observable<Recipe> { 
    return this.getRecipes() 
     .subscribe(recipes => recipes.find(recipe => recipe.ID === id)); 
    } 

我不知道如何从obvserable阵列获取特定的可观察的项目就像我与教程的承诺一样。

回答

1

你应该使用地图这种情况下,您的实现可以是以下

getRecipe(id: number): Observable<Recipe> { 
    return this.getRecipes() 
      .map(recipies => recipies.find(x => x.id === id)); 
    } 
+0

什么是“x”和什么才是我真正使用有 – Cacoon

+0

我不好应该是X => x.id ===编号,有错误现在正确答案 –

+0

谢谢,所以当我们调用'x'我们从它的父母调用它,所以它可以命名任何东西?我也该如何使用这个可观察的,我试图做'ngOnInit():void {th​​is.route.paramMap .switchMap((params:ParamMap)=> this.recipeService.getRecipe(+ params.get(' id'))) .subscribe(recipe => this.recipe = recipe); }'但它并没有加载项目 – Cacoon