Если вы используете Rx JS 6, я бы порекомендовал вам преобразовать обещание в наблюдаемое (используя оператор из ), а затем обрабатывать последующие операции с использованием конвейерных операторов, таких как tap
или switchMap
, в зависимости от желаемого поведения вашего метода. В этом случае мы можем использовать switchMap , так как мы возвращаем наблюдаемое.
import { from } from 'rxjs';
import { switchMap } from 'rxjs/operators';
getData(id) {
return from(this.storage.get(id))
.pipe(
switchMap(content => {
if (content === null) {
return this.getObject(id);
} else {
return of(content);
}
}),
)
}
Оттуда вы можете подписаться на getData
и вернуть наблюдаемые.
myService.getData(id).subscribe((res) => {
// do the rest here
})