Я хочу, чтобы casperjs выполнял вызов ajax, но ждал результата с моего сервера. Это может занять до 3 минут, но, глядя на результаты выполнения моего скрипта, я могу сказать, что время ожидания функции casper.then истекает и продолжается ровно через 30 секунд. Я пробовал поставить casper.options.waitTimeout = 180000 /* 3 минуты */; в моем коде, который действительно работает, и я пытался использовать этот блок кода, который, кажется, ждет 3 минуты каждый раз, независимо от результата моего вызова API.
Я также знаю, что функция оценки возвращает только логическое значение каждый раз, несмотря ни на что, и это не сработает, поскольку мне нужны данные вызова API, которые возвращаются в остальной части моего скрипта. Как я могу заставить эту функцию ждать 3 минуты? И многое происходит за кулисами, так что да, мне нужно ждать так долго.
var casper = require('casper').create();
casper.start('mysite.html', function() {
});
casper.then(function() {
result = getSomethingFromMyServerViaAjax( theId );
});
Это альтернативный метод, который я пробовал, который, кажется, всегда ждет 3 минуты независимо от скорости возврата вызова ajax.
casper.waitFor(function check() {
return this.evaluate(function() {
return result = getSomethingFromMyServerViaAjax( theId ) /* this takes up to 3 minutes */;
});
}, function then() {
casper.log("Doing something after the ajax call...", "info");
this.die("Stopping here for now", "error");
}, 180000 );
Я проверил свой вызов ajax в другом месте, и он работает, если ответ возвращается менее чем за 30 секунд, но если он не работает, casper просто пропускает этот блок и продолжает работать каждый раз.