/ / node js restler результат "get" не завершений при спробі повернути результат - node.js, restler

вузол js restler результат "get" не завершений при спробі повернути результат - node.js, restler

Я намагаюся отримати HTML-код веб-сайту за допомогою restler.Але коли я намагаюся отримати відповідну частину результату, я завжди отримую помилку,

"TypeError: Неможливо прочитати властивість" rawEncoded "з невизначеною".

"rawEncoded" інколи є "res". Я думаю, що це змінюється на основі часу обробки.

Я намагаюсь отримати result.request.res.rawEncode від restler отримати результат.

Моя функція:

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");

Можливо, ретлер - це цілком неправильний шлях. Може бути, я не розумію це повністю. Але я точно застряг ...

Дякую!

Відповіді:

3 для відповіді № 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 має як стартову налагодження ...