В rxjs 5.5.12
я создал login()
до subscribe
с кратным, наблюдаемым do()
login(userEmail, userPassword).subscribe((response) => {
console.log(response);
if (response === 'something') {
// some actions
} else {
// some actions
}
},(error) => {
// some error actions
});
Я использую rxLoginPOST для вызова api:
rxLoginPOST(url, params) {
return Rx.Observable.fromPromise(somePromise).catch(handleErrFunction);
}
Я использую его в функции входа в систему, он возвращает несколько наблюдаемых:
login(email, password) {
return APIService.shared.rxLoginPOST('users/signin', { ...arguments })
.flatMap((response) => {
if (response.status === 200) {
return Rx.Observable.combineLatest(
myObservable1,
myObservable2,
myObservable3
)
} else {
return Rx.Observable.of(response)
}
}).do((result) => {
if (result.length > 0) {
// some logic
} else {
return Rx.Observable.of(result)
}
}).flatMap((result) => {
if (result.length > 0) {
return this.checkUserIsRegistered()
} else {
return Rx.Observable.of(result)
}
})
}
В rxjs 6.5.3
я изменил весь импорт, как
import { Observable, combineLatest, of } from 'rxjs';
import { mergeMap, map, catchError, flatMap, tap } from 'rxjs/operators';
Если я активирую login()
, он покажетdo is not a function
Поэтому я меняю код:
login(userEmail, password) {
return APIService.shared.rxLoginPOST('users/signin', { ...arguments }).pipe(
mergeMap((response) => {
if (response.status === 200) {
return combineLatest(
myObservable1,
myObservable2,
myObservable3
)
} else {
return of(response)
}
}).tap((result) => { // I am stuck here, I have no idea how to continue with it...
console.log('check 4'); // check 4 does not appear.
console.log('response', response);
return of(response)
}
);
Я пытаюсь использовать tap
вместо do
, но проверка 4 не появляется.
Любая помощь будет оценена.