Javascript 在使用CombineTest时,为什么不调用内部可观测的操作符(tap、map)?
为什么不调用操作符tap和内部可观测映射?CombineTest应该订阅它在obsArr中获得的观测值,对吗?为什么此订阅不会触发这些运营商Javascript 在使用CombineTest时,为什么不调用内部可观测的操作符(tap、map)?,javascript,typescript,rxjs,rxjs-pipeable-operators,rxjs-observables,Javascript,Typescript,Rxjs,Rxjs Pipeable Operators,Rxjs Observables,为什么不调用操作符tap和内部可观测映射?CombineTest应该订阅它在obsArr中获得的观测值,对吗?为什么此订阅不会触发这些运营商 const obsArr = []; [[1, 2], [3, 4], [5, 6]].map(arr => { const observable = from(arr); observable.pipe( tap(item => { // this is NOT called console.lo
const obsArr = [];
[[1, 2], [3, 4], [5, 6]].map(arr => {
const observable = from(arr);
observable.pipe(
tap(item => {
// this is NOT called
console.log('tap', item)
}),
map(item => {
// this is NOT called
return item * -1;
})
);
obsArr.push(observable);
});
combineLatest(obsArr).subscribe(latestValues => {
console.log(latestValues);
// LOG: [2, 4, 5]
// LOG: [2, 4, 6]
});
工作人员突击检查:
谢谢你的解释 问题在于,您正在向可观察对象添加管道,但将原始可观察对象推送到数组中。相反,您应该推送修改后的observable:
[[1, 2], [3, 4], [5, 6]].map(arr => {
const observable = from(arr);
obsArr.push(observable.pipe(
tap(item => {
console.log('tap', item)
}),
map(item => {
return item * -1;
})
));
});
问题是,您正在向可观察对象添加管道,但将原始可观察对象推送到数组中。相反,您应该推送修改后的observable:
[[1, 2], [3, 4], [5, 6]].map(arr => {
const observable = from(arr);
obsArr.push(observable.pipe(
tap(item => {
console.log('tap', item)
}),
map(item => {
return item * -1;
})
));
});