Наблюдаемый от генератора, который обрабатывает параллелизм - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу создать наблюдаемое из бесконечного генератора, который вызывает функцию, которая возвращает обещание и поддерживает одновременно 4 невыполненных обещания.У меня есть это

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));

Это просто застревает.Я хочу получить getData, а затем выполнить P для каждого, но только до 4 процессов.

...