Typescript 将RxJS中的观测值从数组链接到函数

Typescript 将RxJS中的观测值从数组链接到函数,typescript,rxjs,Typescript,Rxjs,我有一个位置,我有一个数组的值 对于这些变量中的每一个,我都想调用一个可观察变量,但只有在前一个可观察变量完成之后 有没有一种更“RxJS”的方式来完成以下任务 let num = 0; let myObs = new Observable(observ => { observ.next(1); }) let content=['x','y','z']; myObs.subscribe(data => { let i = 0; let

我有一个位置,我有一个数组的值

对于这些变量中的每一个,我都想调用一个可观察变量,但只有在前一个可观察变量完成之后

有没有一种更“RxJS”的方式来完成以下任务

  let num = 0;

  let myObs = new Observable(observ => {
    observ.next(1);
  })
  let content=['x','y','z'];

  myObs.subscribe(data => {
    let i = 0;
    let that = this;
    let inlineFunc = function(){
      if ( i < content.length){
        that.gen(num).subscribe(() => {
          i++;
          inlineFunc();
        });
      }else{
        observer.next(doc);
      }
    };
    inlineFunc();
  });

  gen(num:number) : Observable < any >{
    return num*num;
  }, 
设num=0;
设myObs=新的可观测值(observ=>{
观察下一步(1);
})
让内容=['x','y','z'];
myObs.subscribe(数据=>{
设i=0;
让那=这;
设inlineFunc=function(){
如果(i{
i++;
inlineFunc();
});
}否则{
下一个观察员(doc);
}
};
inlineFunc();
});
gen(num:number):可观察{
返回num*num;
}, 
如果您想连续重复调用
可观察的
,可以使用

假设您有一个内容数组:

let content=['x','y','z'];
对于内容中的每个值,您都希望调用
gen()
函数,该函数返回一个可观察的:

gen(num: number): Observable<any> {
    return Observable.of(num * num);
}
因为您的
num
为0。我假设
gen()


工作

您可以首先使用from运算符获得可观察的值,然后使用REDUCT

Observable.from([...values])
    .reduce( this.reducingFn, 1 )
ReduceingFunction是一个接受两个参数的函数,第一个是起始值(它是reduce函数中的第二个参数),第二个是外部流发出的当前值(值数组中的每个值)

0
0
0
0
Observable.from([...values])
    .reduce( this.reducingFn, 1 )
// somewhere in you class
reducingFn( accumulatedValue, value){
    return accumulatedValue * value
}