में कॉलबैक फ़ंक्शन से मूल्य लौटाना मुझे नोड.जेएस में कॉलबैक फ़ंक्शन से मूल्य लौटने में छोटी परेशानी का सामना करना पड़ रहा है, मैं अपनी स्थिति को यथासंभव आसान समझाने की कोशिश करूंगा।नोड.जेएस
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
});
मैं एक समारोह के अंदर लपेट और इस तरह एक मूल्य के वापस जाने के लिए करने की कोशिश की: विचार करें मैं एक टुकड़ा है, जो यूआरएल लेता है और कि यूआरएल हिट और देता है उत्पादन क्योंकि में
function doCall(urlToCall) {
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
return finalData;
});
}
मेरी Node.js कोड, मैं इस तरह है, जहां urlToCall
का मूल्य तय किया जाएगा if-else
बयान के एक बहुत कुछ है:
if(//somecondition) {
urlToCall = //Url1;
} else if(//someother condition) {
urlToCall = //Url2;
} else {
urlToCall = //Url3;
}
बात अंदर बयानों के सभी है urlToCall
के मूल्य को छोड़कर urllib.request
वही रहेगा। तो निश्चित रूप से मुझे उन सामान्य कोड को एक फ़ंक्शन के अंदर रखना होगा। मैंने कोशिश की लेकिन doCall
में हमेशा मुझे undefined
वापस कर देगा। मैं इस तरह की कोशिश की:
response = doCall(urlToCall);
console.log(response) //Prints undefined
लेकिन अगर मैं doCall()
अंदर मूल्य प्रिंट यह पूरी तरह प्रिंट, लेकिन यह हमेशा undefined
वापस आ जाएगी। मेरे शोध के अनुसार मुझे पता चला कि हम कॉलबैक कार्यों से मूल्य वापस नहीं कर सकते! (क्या यह सच है)? यदि हां, तो क्या कोई मुझे सलाह दे सकता है कि इस स्थिति को कैसे संभाला जाए, क्योंकि मैं प्रत्येक if-else
ब्लॉक में डुप्लिकेट कोड को रोकना चाहता हूं।
"यह सच है?" - हाँ बिलकुल। –
@JanDvorak, तो मेरे पास डुप्लिकेट कोड के अलावा कोई विकल्प नहीं है? ;) –
क्या आपकी कुछ कॉलबैक मदद करेगा? मुझे ऐसा विश्वास है। –