/ / नोड जेएस रिस्टलर परिणाम "प्राप्त करें" जब परिणाम वापस करने की कोशिश कर रहा है तो पूरा नहीं - नोड.जेएस, रिस्टलर

परिणाम लौटने की कोशिश करते समय नोड जेएस रेस्टलर परिणाम "प्राप्त" पूरा नहीं होता - node.js, restler

मैं रेस्टोरर का उपयोग करके किसी वेबसाइट का HTML प्राप्त करने की कोशिश कर रहा हूं। लेकिन जब मैं परिणाम का प्रासंगिक हिस्सा प्राप्त करने की कोशिश करता हूं, तो मैं हमेशा त्रुटि का सामना करता हूं,

"TypeError: अपरिभाषित की संपत्ति" rawEncoded "नहीं पढ़ सकता है।

"रॉकेनकोड" कभी-कभी "रेस" होता है। मुझे लगता है कि यह प्रसंस्करण समय के आधार पर बदलता है।

मैं परिणाम प्राप्त करने की कोशिश कर रहा हूं। restler से परिणाम .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");

शायद टॉयलेट जाना पूरी तरह से गलत तरीका है। शायद मैं इसे पूरी तरह से समझ नहीं पा रहा हूं। लेकिन मैं निश्चित रूप से फंस गया हूं ...

धन्यवाद!

उत्तर:

जवाब के लिए 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...
});

मुझे लगता है कि भविष्य में आने वाली समस्याओं का समाधान होगा। हालांकि, मुझे लगता है कि असली समस्या आप का सामना करना पड़ रहा है कि परिणाम है। वास्तव में संपत्ति नहीं है res। मैं सोच रहा हूँ कि ऊपर दिया गया मेरा बदलाव इस समस्या को ठीक कर सकता है (यह सुनिश्चित नहीं है कि कैसे)। result.request एक डिबगिंग स्टार्टर के रूप में है ...