|
1 | 1 | // #docregion
|
2 | 2 | import { Injectable } from '@angular/core';
|
3 | 3 |
|
| 4 | +import { Observable } from 'rxjs/Observable'; |
| 5 | +import { of } from 'rxjs/observable/of'; |
| 6 | +import 'rxjs/add/operator/delay'; |
| 7 | + |
4 | 8 | import { Hero, heroes } from './data-model';
|
5 | 9 |
|
6 | 10 | @Injectable()
|
7 | 11 | export class HeroService {
|
8 | 12 |
|
9 |
| - getHeroes(): Promise<Hero[]> { |
10 |
| - return new Promise<Hero[]>(resolve => { |
11 |
| - // simulate server latency with delay |
12 |
| - setTimeout(() => resolve(heroes), 500); |
13 |
| - }); |
| 13 | + delayMs = 500; |
| 14 | + |
| 15 | + getHeroes(): Observable<Hero[]> { |
| 16 | + return of(heroes).delay(this.delayMs); // simulate latency with delay |
14 | 17 | }
|
15 | 18 |
|
16 |
| - updateHero(hero: Hero): Promise<Hero> { |
17 |
| - // Demo: faking server update; nothing can go wrong ;-) |
18 |
| - return new Promise<Hero>(resolve => { |
19 |
| - // simulate server latency with delay |
20 |
| - const ix = heroes.findIndex(h => h.id === hero.id); |
21 |
| - setTimeout(() => { |
22 |
| - // Demo: mutate cached hero |
23 |
| - Object.assign(heroes[ix], hero); |
24 |
| - resolve(hero); |
25 |
| - }, 500); |
26 |
| - }); |
| 19 | + // Demo: faking server update; assume nothing can go wrong ;-) |
| 20 | + updateHero(hero: Hero): Observable<Hero> { |
| 21 | + const oldHero = heroes.find(h => h.id === hero.id); |
| 22 | + const newHero = Object.assign(oldHero, hero); // Demo: mutate cached hero |
| 23 | + return of(newHero).delay(this.delayMs); // simulate latency with delay |
27 | 24 | }
|
28 | 25 | }
|
0 commit comments