0

我正在尝试在函数内部使用 pages.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();

得到“未定义”。

4

1 回答 1

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!
        });
      }
    });
}

这显然会很快开始变得疯狂

于 2013-09-01T15:59:53.147 回答