Как связать наблюдаемые rxjs

Я из Angular1, и, как и обещание цепочки, я хочу иметь подобное поведение.

У меня есть метод в someclass : -

{.........
      doLogin (username, password) {
            .......
            .......
            return this.http.get(api).subscribe(
                    data => {.....}, //enters here
                    err => {.....}
        }

Тогда я вызываю этот метод: -

 someclass.doLogin(username, password).subscribe(
           data => { }, //Not getting called
            err => { }
 }

Как я уже упоминал в качестве комментариев к приведенному выше коду, подписка не вызывается в классе вызывающей стороны.

Есть предложения о том, как это сделать?

7 голосов | спросил VISHAL DAGA 29 MaramTue, 29 Mar 2016 11:23:50 +03002016-03-29T11:23:50+03:0011 2016, 11:23:50

1 ответ


0

На самом деле вы возвращаете объект метода subscribe. Это подписка, а не наблюдаемая. Таким образом, вы не сможете подписаться (снова) на возвращенный объект.

Observables позволяет строить цепочку потоков данных на основе наблюдаемых операторов. Это зависит от того, что вы хотите сделать.

Если вы просто что-то запускаете или устанавливаете свойство службы из своего сервиса, вы можете использовать оператор do и catch один для обработки ошибок:

doLogin (username, password) {
  .......
  .......
  return this.http.get(api).do(data => {
    .....
    // Call something imperatively
  })
  .catch(err => {
    .....
    // Eventually if you want to throw the original error
    // return Observable.throw(err);
  });
}

Не забудьте включить эти операторы, так как они не включены Rxjs "из коробки":

import 'rxjs/add/operator/do';
import 'rxjs/add/operator/catch';

или глобально (все операторы):

import 'rxjs/Rx';

См. связанные вопросы:

ответил Thierry Templier 29 MaramTue, 29 Mar 2016 11:27:01 +03002016-03-29T11:27:01+03:0011 2016, 11:27:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132