node js restler结果尝试返回结果时“get”未完成

时间:2013-07-09 22:28:47

标签: node.js restler

我正在尝试使用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是完全错误的方式。也许我完全不了解它。但我肯定被卡住了......

谢谢!

1 个答案:

答案 0 :(得分: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作为调试启动器的属性...