来自处理并发的生成器的可观察对象

时间:2018-12-02 20:20:45

标签: rxjs rxjs6

我想从一个无限生成器创建一个可观察对象,该生成器调用一个函数,该函数返回一个promise并同时维护4个未解决的promise。我有这个

const {from} = require('rxjs');
const {mergeMap}  = require('rxjs/operators');
const delay = require('delay');

let i = 0;
function* getData() {
  while(true){
    yield Promise.resolve(i++);
  }
}

function executeP(val){
  console.log('a');
  return delay(Math.random()*3000).then(()=>val);
}


const obs = from(getData()).pipe(
  mergeMap((x)=>from(executeP(x)),4)
);

obs.subscribe(x=>console.log(x));

它只是被卡住了。我希望它先获取数据,然后为每个执行executeP,但最多只能有4个进程。

0 个答案:

没有答案