@ MichaelSolati почти верен, за исключением
- , вы должны перехватить и вернуть значение, например,
null
, если вы хотите увидеть вывод в subscribe()
- потому что zip не сработает с empty()
- ваши
tap()
обратные вызовы не находятся в конвейере zip()
, это отдельные ветви, на которые нет подписки, поэтому они никогда не активируются.
Обратите внимание, что с изменениямидля версий rxjs импорт может быть немного сложным, например, zip
доступен как функция и как оператор.
С rxjs.umd.js
cdn, использованным в приведенном ниже фрагменте, я изначально использовал оператор по ошибке иэто не выдает ошибку (но не работает).
Я отмечаю, что из комментариев выше вы делаете это в контексте Angular .Если у вас все еще есть проблема, пожалуйста, опубликуйте свой полный угловой модуль с импортом, и мы сможем решить эту проблему.
console.clear()
//console.log(rxjs)
// Get the operators and creators
const tap = rxjs.operators.tap
const empty = rxjs.empty
const zip = rxjs.zip
const catchError = rxjs.operators.catchError
const of = rxjs.of
const throwError = rxjs.throwError
//var request1 = of(1)
var request1 = throwError('error')
var request2 = of(2)
var request3 = of(3)
var req1 = request1.pipe(
tap(() => console.log('request1')),
catchError((err) => {
console.log('request1 has error')
return of(null)
})
);
var req2 = request2.pipe(
tap(() => { console.log('request2');})
);
var req3 = request3.pipe(
tap(() => { console.log('request3');})
);
var myObservable = rxjs.zip(req1, req2, req3);
myObservable.subscribe(
result => { console.log('result', result) }
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.2.0/rxjs.umd.js"></script>