Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用CombineTest时,为什么不调用内部可观测的操作符(tap、map)?_Javascript_Typescript_Rxjs_Rxjs Pipeable Operators_Rxjs Observables - Fatal编程技术网

Javascript 在使用CombineTest时,为什么不调用内部可观测的操作符(tap、map)?

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

为什么不调用操作符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.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;
    })
  ));
});