Javascript 如何使用PhantomJS';是否在函数返回中打开回调?

Javascript 如何使用PhantomJS';是否在函数返回中打开回调?,javascript,phantomjs,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() { re

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

获取“未定义”。

我认为异步不是这样工作的

返回值不是在回调返回时立即发生的

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

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

dm03514,只有这条路吗?我不能在GetPageScont基金之外使用var html?