Ionic / Angular2 - Вставка «посредника» между Page.ts и Provider.ts - PullRequest
0 голосов
/ 14 мая 2018

Я хочу знать, возможно ли это или хотя бы направление на: Поместите файл-посредник между моим Home.ts и моим Provider.ts.

Например: На моем Home.ts я вызову метод getJson(), который вызовет мой метод Mediator getJson(), который вызовет метод getJson() моего провайдера.

Причина в том, что я считаю, что это хороший подход для обработки и уточнения данных, которые я получаю.

Вот что я попробовал с крайним провалом и разочарованием ....: '(

Home.ts

ionViewDidLoad(){

   let observer: any = this.mediator.get().subscribe(
      (response: any) => this.get_success(response),
      (response: any) => this.get_fail(response));

}

private get_success(response: any): void {
   console.log('Sucess!', response)
}

private get_fail(response: any): void {
   console.log('Fail!', response)
}

HomeMediator.ts

get(): Observable<any>{
   let observer = this.dataService.get();

   observer.subscribe(
      (response: any) => this.get_success(response),
      (response: any) => this.get_fail(response));

   return observer;
}

get_success(res: Object){
   res['key'] = "VALOR";
   console.log('Ok!', res)
}

get_fail(res: any){
   console.log('Nops', res)
}

Provider.ts

public get(): Observable<Object> {
   return this.http.get(this.url)
      .map((response: Response) => response.json());

}

Файл JSON

{
   "key": "value :D"
}

Любая помощь? Мне не обязательно использовать Observables .. Я все еще изучаю Angular и Ionic ... Спасибо за любую помощь, ребята! о /

1 Ответ

0 голосов
/ 24 мая 2018

Вы подписываетесь дважды на Observable, что вероятно , почему ваш код не работает. Это не должно быть сделано. Я предоставлю альтернативу с обратными вызовами. Я не буду добавлять в ваш Provider.ts, так как этот код в порядке.


Посредник

// add two paramter callbacks
get(successCallback, errorCallback): void {
  this.dataService.get().subscribe(
     response => { 
       this.get_success(response);
       // execute the callback function AFTER this.get_success is finished
       successCallback(response);
     }, error => {
       this.get_fail(error);
       errorCallback(error);
     }
  );
}

Главная

ionViewDidLoad() {

  // pass the functions to the mediator (without () )
  this.mediator.get(success, failure);
}

success(response: any) { /* some code */}
failure(error: any) { /* some code */}

...