Zapytania jako obietnice

Obserwacje zwracane przez klienta Angular http mogą zostać przekształcone w obietnice.

Przekształcając obserwacje w obietnice utracisz możliwość anulowania żądania i możliwość połączenia operatorów RxJS.

import { Http } from '@angular/http';
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

const SERVER = 'https://books.otwartaedukacja.pl/books';

@Injectable()
export class SearchService {

  constructor(private http: Http) {}

  search(term: string) {
    return this.http.get(SERVER+`?title=${term}`)
     .map((response) => response.json())
     .toPromise();  
  }
}

Następnie konsumowalibyśmy to jako zwykłą obietnicę w komponencie.

@Component({ /* ... */ })
export class AppComponent {
    /* ... */

    search() {
        this.searchService.search(this.searchField.value)
          .then((result) => {
        this.result = result.artists.items;
      })
      .catch((error) => console.error(error));
    }
}