Свойство «await» функции «async» спит после экземпляра - Javascript - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю на слом.Я использую Phantom JS вместе с Node JS.Phantom JS загружает страницу с функцией async, например: var status = await page.open(url).Иногда из-за медленного интернета загрузка страницы занимает больше времени, и через некоторое время страница status не возвращается, чтобы проверить, загружена она или нет.И page.open() спит, который вообще ничего не возвращает, и все казни ожидают.

Итак, мой основной вопрос:есть ли способ сохранить это page.open(url) в действии, так как выполнение остальной части кода ожидает загрузки страницы.

Мой код

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 Ответ

0 голосов
/ 10 декабря 2018

Из вашего комментария может показаться, что время истекло (иногда из-за медленного интернета) ... вы можете проверить это, добавив в код метод 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 прощепонимать и кодировать, и в настоящее время этот проект поддерживается в отличие от Phantom JS, который больше не поддерживается (последний выпуск был два года назад).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...