Здравствуйте.
Из-за того что в PhantomJS .open асинхронный, цикл не дожидается ответа и проходит дальше. Есть решения, с setTimeout, но они мне не подходят, из-за фиксированной задержки. У меня так же есть вариант с тем, чтобы запускать скрипт отправка запроса отдельно, и просто ждать его ответа, exec же не асинхронный (надеюсь).
page.open(platform.url.list.replace('{PAGE.NUM}', numPage), function(sList) {
if(sList === "success") {
var listResources = page.evaluate(handler.getListResources);
for(iList in listResources) {
page.open(platform.url.list.replace('{RES.ID}', listResources[iList].id), function() {
console.log(1);
if(sVersions === "success") {
var versionsResource = page.evaluate(handler.getVersions);
for(iVersion in versionsResource) {
listResources[iList].versions = versionsResource[iVersion];
console.log(5)
}
}
});
};
console.log(JSON.stringify(listResources));
numPage++;
} else phantom.exit();
});
В цикле
for(iList in listResources)
, всё выполняется 1 раз, последний и выводится
console.log(1);
1 раз, хотя там 20 ссылок.
Возможно ли как-то поставить цикл на паузу, до помента пока callback функция не снимер его с паузы и цикл продолжится?