我想从一个无限生成器创建一个可观察对象,该生成器调用一个函数,该函数返回一个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个进程。