tl;डॉ कॉलबैक में सब कुछ होता है।
आप जावास्क्रिप्ट की अतुल्यकालिक प्रकृति पर ट्रिपिंग कर रहे हैं। जब तक आपका console.log(value);
कॉल चलता है, क्वेरी (आवश्यक रूप से) पूरी नहीं हुई है। इसलिए, उस समय क्वेरी के परिणाम के उपलब्ध होने का कोई तरीका नहीं है।
कई डेवलपर इस तरह के पैटर्न का उपयोग करते हैं, जिसमें क्वेरी परिणाम आने पर अगले चरण को संभालने के लिए कॉलबैक फ़ंक्शन होता है।
function quo (success){
value = connection.query(
'SELECT role from `roles` where `id` = 1' ,
function (error, results, fields) {
if (error) throw error;
console.log('The role is: ', results[0].role);
success (results[0].role);
});
}
quo (function (role) {
console.log(role);
/* do something useful with the role that came back from the query */
});
Promise
ऑब्जेक्ट्स इस तरह की चीज़ को नोड.जेएस में पढ़ने में आसान बनाते हैं। लेकिन उन्हें समझाना किसी भी तरह स्टैक ओवरफ़्लो उत्तर के दायरे से बाहर है।