У меня есть простой пример, когда два метода создают и возвращают обещание. Второй метод buildRedCar()
вызывает первый метод buildCar()
, изменяет значение, возвращаемое обещанием, и возвращает другое обещание от самого себя. Затем код вызывает buildRedCar()
, и просто console.logs результат. Это не работает при преобразовании в обещания, но это делает работы при использовании прямых наблюдаемых.Rxjs toPromise поведение отличное от наблюдаемого
ли не работы:
import * as Rx from 'rx';
function buildCar(): Rx.IPromise<string> {
let car = 'Car';
return Rx.Observable.just<string>(car).toPromise();
}
function buildRedCar(): Rx.IPromise<string> {
let observable = Rx.Observable.create<string>((observer) => {
buildCar().then((car) => {
observer.onNext('Red ' + car);
});
})
return observable.toPromise();
}
buildRedCar().then((car) => {
console.log(car);
});
ли Работа:
import * as Rx from 'rx';
function buildCar(): Rx.Observable<string> {
let car = 'Car';
return Rx.Observable.just<string>(car);
}
function buildRedCar(): Rx.Observable<string> {
let observable = Rx.Observable.create<string>((observer) => {
buildCar().subscribe((car) => {
observer.onNext('Red ' + car);
});
})
return observable;
}
buildRedCar().subscribe((car) => {
console.log(car);
});
Любая идея, почему другое поведение, когда единственным различием является преобразование наблюдаемой обещанию перед возвращением?