首页 文章

“async”函数的“await”属性在实例之后休眠 - Javascript

提问于
浏览
0

我正在做一个刮板 . 我正在使用Phantom JS和Node JS . Phantom JS使用 async 函数加载页面,如: var status = await page.open(url) . 有时,由于互联网速度较慢,页面加载时间较长,一段时间后页面 status 未返回,无论是否加载,都要进行检查 . 并且 page.open() 睡眠,它根本不返回任何内容,并且所有执行都在等待 .

所以,我的基本问题是;有没有办法让这个 page.open(url) 保持活着状态,因为其余代码的执行会等到页面加载完毕 .

My Code is

const phantom = require('phantom');

ph_instance = await phantom.create();
ph_page = await ph_instance.createPage();

var status = await ph_page.open("https://www.cscscholarship.org/");

if (status == 'success') {
  console.log("Page is loaded successfully !");
  //do more stuff
}

1 回答

  • 1

    从您的评论中,似乎它可能超时(因为有时候网速较慢)...您可以通过在代码中添加 onResourceTimeout 方法来验证这一点(链接:http://phantomjs.org/api/webpage/handler/on-resource-timeout.html

    它看起来像这样:

    ph_instance.onResourceTimeout = (request) => {
        console.log('Timeout caught:' + JSON.stringify(request));
    };
    

    如果最终成立,您可以增加默认资源超时设置(链接:http://phantomjs.org/api/webpage/property/settings.html),如下所示:

    ph_instance.settings.resourceTimeout = 60000 // 60 seconds
    

    编辑:我知道这个问题是关于幻影的,但是我还想提到另一个框架我用来刮掉项目之前叫做Puppeteer(链接:https://pptr.dev/)我个人发现他们的API 's are easier to understand and code in, and it'目前是一个维护项目,不像Phantom JS这是没有维护(他们的最后一次发布是两年前) .

相关问题