0

我正在尝试使用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是完全错误的方法。可能我没有完全理解。但我肯定被困住了......

谢谢!

4

1 回答 1

3

您是否会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作为调试启动器的属性...

于 2013-07-10T01:03:36.490 回答