Javascript 相当复杂的RXJS观察到永远不会完成

Javascript 相当复杂的RXJS观察到永远不会完成,javascript,rxjs,rxjs5,Javascript,Rxjs,Rxjs5,我正在创建一个RXJS observable,以执行给定URL数组输入的任务: let scrapeObservable: Observable<IProduct> = Observable.from(urlList) .mergeMap(url => Observable.forkJoin( Observable.of(url), getPageDom(url), // Returns Observable that completes with Page

我正在创建一个RXJS observable,以执行给定URL数组输入的任务:

let scrapeObservable: Observable<IProduct> = Observable.from(urlList)
  .mergeMap(url => Observable.forkJoin(
    Observable.of(url),
    getPageDom(url), // Returns Observable that completes with PageDom
    getExtractionRule(parseURL(url)["Host"]) // returns observable with data needed to perform work on the page dom
  ).delay(timeDelay += intervalTime)) // scrapes one url every set interval - using 0 in this case
  .mergeMap(result => getProductInfoFromDOMObservable(result[0], result[1], result[2][0], result[2][1], requiredFields)) // performs work on page dom using data above.
  .merge(maxConcurrentRequests) // prevents more than an certain number of processes from taking place simultaneously.
  .catch(handleError);
可观察:可观察=可观察。从(urlList)
.mergeMap(url=>Observable.forkJoin(
可观察的(url),
getPageDom(url),//返回使用PageDom完成的可观察对象
getExtractionRule(parseURL(url)[“主机”])//返回可观察的数据,这些数据是在dom页面上执行工作所需的
).delay(timeDelay+=intervalTime))//每设置一个间隔刮取一个url-在本例中使用0
.mergeMap(结果=>getProductInfoFromDOMObservable(结果[0],结果[1],结果[2][0],结果[2][1],requiredFields))//使用上述数据在页面dom上执行工作。
.merge(maxConcurrentRequests)//防止同时发生超过一定数量的进程。
.接住(把手错误);
当我订阅这个observable时,它看起来好像对于一些输入(相当大的URL列表>500),它从不调用complete或error。就好像可观测的东西挂了起来。我不明白为什么会发生这种情况,但这会导致我的代码出现问题。对于小的输入,它工作正常,对于大的输入,它并不总是失败,只是有些时候


你知道是什么导致了这种行为吗?

那么你在pagedom或其他方面有问题,但在rxjs方面可能没有问题。因此,我们来看看这些答案中的一个,我想你也有同样的问题here@user3743222谢谢你们两个!我追踪了我的问题,它在我的getPageDom函数中。