मैं एक ऐसे फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं जो मेरे वेब SQL डेटाबेस से मूल्यों को चुनें। मैं चयनित मूल्यों को मूल कार्य के अंदर एक चर में वापस करना चाहता हूं। लेकिन, चर हमेशा रिक्त हो जाता है, गीला यह वैश्विक है या नहीं।वेब एसक्यूएल चयन लेनदेन वापसी मूल्य
जैसा कि आप selectRow फ़ंक्शन के अंदर console.log को देख सकेंगे, डेटाबेस क्वेरी से सही मान लॉग करता है, लेकिन console.log initDB फ़ंक्शन में खाली दिखाई देता है।
मैंने यह भी देखा है कि रिक्त लॉग selectRow फ़ंक्शन के अंदर लॉग से पहले दिखाई देता है। मुझे मंच मिल गए हैं जहां लोग डेटाबेस लेनदेन के बारे में बात कर रहे हैं जो असीमित है। मैं समझता हूं कि यही कारण है कि मेरा चर वापस लौटा रहा है। हालांकि, दीवार के खिलाफ अपने सिर को मारने के बाद कई बार मुझे इस असीमित समस्या के आसपास काम करने का कोई रास्ता नहीं मिल रहा है। क्योंकि आप एक देरी प्रतिक्रिया
/** Initialize Database **/
function initDB(){
createTable();
selectRow("SELECT * FROM planets;", function(pleaseWork) {
console.log(pleaseWork);
// any further processing here
});
}
/** Select Row from Table **/
function selectRow(query, callBack){ // <-- extra param
var result = [];
db.transaction(function (tx) {
tx.executeSql(query, [], function(tx, rs){
for(var i=0; i<rs.rows.length; i++) {
var row = rs.rows.item(i)
result[i] = { id: row['id'],
name: row['name']
}
}
console.log(result);
callBack(result); // <-- new bit here
}, errorHandler);
});
}
बहुत बहुत शुक्रिया। कॉलबैक मेरे लिए एक नई अवधारणा है लेकिन मैं उनके बारे में अधिक जानना सुनिश्चित करूँगा। –
जावास्क्रिप्ट से शुरू होने पर उपयोग करने के लिए कॉलबैक सबसे कठिन अवधारणा है – drinovc