【问题标题】:node js restler result "get" not complete when trying to return result尝试返回结果时,节点 js restler 结果“get”不完整
【发布时间】:2013-07-09 22:28:47
【问题描述】:

我正在尝试使用restler 获取网站的HTML。但是当我尝试获取结果的相关部分时,我总是得到错误,

“TypeError:无法读取未定义的属性‘rawEncoded’”。

'rawEncoded' 有时是'res'。我认为它会根据处理时间而变化。

我正在尝试从 restler 获取 result.request.res.rawEncode 获取结果。

我的功能:

var rest = require('restler');

var loadHtmlUrl = function(weburl) {
    var resultstr = rest.get(weburl).on('complete', function(result) {
        var string = result.request.res.rawEncode;
        return string;
    });
    return resultstr;
};

然后:

var htmlstring = loadHtmlUrl('http://google.com');

也许 restler 是完全错误的方法。可能我没有完全理解。但我肯定被困住了......

谢谢!

【问题讨论】:

  • 您的代码中有许多错误,请检查一下(例如第二段代码中var 后面的等号)
  • 抱歉,已解决。匆匆写下。谢谢!

标签: node.js restler


【解决方案1】:

您的return resultstr;on('complete' 回调被调用之前不会运行,因为它是异步的,因此导致您的htmlstring 为空?我认为您需要将回调作为loadHtmlUrl 的参数,如下所示:

var rest = require('restler');

var loadHtmlUrl = function(weburl, callback) {
    var resultstr = rest.get(weburl).on('complete', function(result) {
      callback(result.request.res.rawEncode);
    });
};

然后这样称呼它:

var htmlstring = null;
loadHtmlUrl('http://google.com', function(rawEncode) {
  htmlstring = rawEncode;
  //Do your stuff here...
});

我认为这将解决您将来遇到的问题。但是,我认为您面临的真正问题是 result.request 不具有res 的属性。我认为我上面的更改可能会解决这个问题(不太确定如何)。如果没有,那么我建议您查看result.request 作为调试启动器具有哪些属性...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多