/ / nó js restler resultado “get” não concluído ao tentar retornar o resultado - node.js, restler

nó js restler resultado “get” não completo ao tentar retornar o resultado - node.js, restler

Eu estou tentando obter o HTML de um site usando o restaurador. Mas quando eu tento obter a parte relevante do resultado, eu sempre recebo o erro,

"TypeError: Não é possível ler a propriedade" rawEncoded "de indefinido".

"rawEncoded" às vezes é "res". Eu acho que isso muda com base no tempo de processamento.

Eu estou tentando obter result.request.res.rawEncode do restaurador obter resultado.

Minha função:

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

Então:

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

Talvez o restler seja o caminho totalmente errado a seguir. Talvez eu não entenda isso completamente. Mas eu definitivamente estou preso ...

Obrigado!

Respostas:

3 para resposta № 1

Seu return resultstr; não correr antes do on("complete" callback é chamado porque é assíncrono, resultando no seu htmlstring sendo nulo? Eu acho que você precisa ter um retorno de chamada como um parâmetro para o seu loadHtmlUrl igual a:

var rest = require("restler");

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

E então ligue assim:

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

Eu acho que isso resolverá problemas futuros que você terá. No entanto, acho que o problema real que você está enfrentando é que result.request não tem a propriedade de res. Eu estou pensando que a minha mudança acima pode corrigir este problema (não sei como). Se não, então eu recomendo olhando para que propriedades result.request tem como iniciador de depuração ...