В официальном angular2 tutorial содержит следующий кодЯвляется наблюдаемым и обещающим совместимым в rxjs?
getHeroes(): Promise<Hero[]> {
return Promise.resolve(HEROES);
}
ngOnInit(): void {
this.route.params
.switchMap((params: Params) => this.heroService.getHero(+params['id']))
.subscribe(hero => this.hero = hero);
console.log(this.route.params);
console.log(this.route.params
.switchMap((params: Params) => this.heroService.getHero(+params['id'])));
}
Теперь мы знаем, что this.route.params
возвращает наблюдаемым, в то время как this.heroService.getHero(+params['id'])
возвращает обещание
Вот подпись для rxjs
switchmap
switchMap(project: function: Observable, resultSelector: function(outerValue, innerValue, outerIndex, innerIndex): any): Observable
Мы видим, что первый параметр принимает функцию, которая испускает наблюдаемую ,
Однако в приведенном выше примере мы фактически прошли функцию, которая испускает обещание.
Совместимы ли они друг с другом?
Кроме того, консоль
console.log(this.route.params
.switchMap((params: Params) => this.heroService.getHero(+params['id'])));
выходы
AnonymousSubject {_isScalar: false, observers: Array[0], closed: false, isStopped: false, hasError: false…}
_isScalar
не должны быть установлены в верно, так как функция выводит обещание?
Возможно, вы ищете 'Observable # fromPromise' ([v4 docs] (https://github.com/Reactive-Extensions/RxJS/blob/v4.1.0/doc/api/core/operators/frompromise.md), [v5 docs] (http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-fromPromise)) – Whymarrh
@Whymarrh, так что 'fromPromise' неявно вызывается в примере I приведенный выше? – Kevin