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

标签 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();

获取“未定义”。

最佳答案

我不认为这就是异步的工作方式,

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

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

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

关于javascript - 如何在函数返回中使用PhantomJS的webpage.open回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560136/

相关文章:

javascript - 如何延迟特定 Controller (不是路由)的实例化?

javascript - jqGrid userData 在 View 中显示值(asp.net mvc3)

python - 如何使用 Python 字符串加载 PhantomJS

javascript - 如何在 Phantomjs Webserver 中添加特定路由?

selenium-webdriver - JRuby Watir phantomjs 异常未知错误(Windows 说 "The operation completed successfully.",但它没有。)

javascript - 如何根据th更新td?

javascript - 命名多个迭代计数器的良好做法

javascript - 使用 require() 为服务器端/PhantomJS 转换 JS 脚本

javascript - 在 PhantomJS 中解析 JSON 平面文件的问题(没有 jquery,请使用原始 javascript)

javascript - jQuery/JS : How to create a SEO-friendly link