2015-07-13 4 views
0

Я пытаюсь использовать Bluebird для promisify метод phantomJS:Продвинуть метод страницы PhantomJS?

page = require('webpage').create(); 
var checkWebpage = Promise.promisify(page.evaluate(function() { 
     // do my thing 
})); 

checkWebpage().then(function(result) { 
    return result; 
}); 

Однако я получаю следующее сообщение об ошибке:

PHANTOM ERROR: TypeError: fn must be a function 
+0

Почему вы хотите обещать 'page.evaluate'? Это синхронная функция. Кроме того, вы пытаетесь обезопасить возвращаемое значение 'page.evaluate', которое не может быть функцией. –

+0

@ArtjomB Мне нужно следить за страницей, пока не появится определенный атрибут. Лучше ли опросить? – redconservatory

+1

Возможно, проблема заключается в том, что обратный вызов 'page.evaluate'« изолирован », поэтому вам, вероятно, понадобится функция-обертка. По крайней мере, я не вижу другого способа, но я еще не работал с синей птицей. –

ответ

1

Promisify принимает функцию в качестве аргумента, вы даете это возвращаемое значение функции, оцениваемой в контексте объекта страницы. Оберните аргумент в другой функции, если вы хотите оценить свою начальную функцию на странице, если нет, просто передайте свою функцию как есть.

Смежные вопросы