如何在函数返回中使用PhantomJS的webpage.open回调?

时间:2013-09-01 15:51:16

标签: javascript phantomjs

我正在尝试在函数内部使用webpage.open方法的回调,但是获取未定义的值:

getPagesCount = function (url)
{
    var page = require('webpage').create();

    return page.open(url, function (status) {
      if (status === 'success') {
        return page.evaluate(function() {
          return document.body.innerHTML;
        });
      }
    });
}
html = getPagesCount('http://google.com');
console.log(html);
phantom.exit();

得到'未定义'。

1 个答案:

答案 0 :(得分:2)

我不认为那是异步的方式,

当您的回调返回

时,返回值不会立即发生

解决问题的一种简单方法(但越来越复杂的方法)可能是将所有逻辑移到最后一个回调中。

getPagesCount = function (url)
{
    var page = require('webpage').create();

    page.open(url, function (status) {
      if (status === 'success') {
        page.evaluate(function() {
          var html = document.body.innerHTML;
          // now you can do something with your html!
        });
      }
    });
}

This can obviously start to get crazy very quickly