Я намагаюся отримати 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
має як стартову налагодження ...