q
. के मान को ठीक से कैप्चर करने का सबसे आसान तरीका आधुनिक जावास्क्रिप्ट में एक क्लोजर में वेरिएबल का उपयोग करना है forEach
:
queries.forEach(function(q) {
client.query(q[0], function(err, result) {
if(err) {
console.log(err);
} else {
q[1](result);
}
});
});
यदि आप मान को कैप्चर नहीं करते हैं, तो आपका कोड उस अंतिम मान को दर्शाता है जो q
. है था, जैसा कि कॉलबैक फ़ंक्शन को बाद में निष्पादित फ़ंक्शन के संदर्भ में निष्पादित किया गया था।
forEach
, कॉलबैक फ़ंक्शन का उपयोग करके q
. के मान को अलग और कैप्चर करता है इसलिए आंतरिक कॉलबैक द्वारा इसका उचित मूल्यांकन किया जा सकता है।