我正在尝试使用PhantomJS和typescript / rxjs从200多个网页中读取一些数据 到目前为止我提出的是这个
Observable.fromPromise(phantom.createPage()).flatMap(jobPage => {
return Observable.fromPromise(jobPage.open(url)).flatMap(status => {
if (status !== "success") {
console.error("Couldn't load job page for url " + url + " Status: " + status);
jobPage.close();
return Observable.of(undefined)
} else {
return Observable.fromPromise(jobPage.evaluate(function () {
//do some content reading, return data
return data;
}));
}
});
})
并且它可以工作,但是每个页面都变得越来越慢,最后以Phantom的Memory Exhausted消息结束。我想这是因为我没有关闭我正在创建的网页,但我不知道怎么做这样的情况(flatMap创建一个新的,我需要它以后提取,而Observable.fromPromise()不让我在完成后关闭页面。
感谢任何帮助
答案 0 :(得分:1)
好的,想通了,只需要使用
Observable.fromPromise(phantom.createPage()).flatMap(jobPage => {
//stuff as before
}).finally(function(){
jobPage.close();
})