如何在使用后正确关闭phantomjs网页?

时间:2017-12-11 09:49:31

标签: javascript typescript phantomjs

我正在尝试使用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()不让我在完成后关闭页面。

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

好的,想通了,只需要使用

Observable.fromPromise(phantom.createPage()).flatMap(jobPage => {
            //stuff as before
        }).finally(function(){
                        jobPage.close();
                    })