मुझे लगता है कि मेरे पास एक सापेक्ष सरल सवाल है, लेकिन मैं मंडलियों में सोचता रहता हूं और यहां तक कि Google मुझे जवाब नहीं दे रहा है जिसके साथ मैं काम कर सकता हूं।जावास्क्रिप्ट WebSQL क्वेरी। कब समाप्त हुआ पता कैसे?
असल में मैं कुछ रिकॉर्ड कॉपी करने की कोशिश कर रहा हूं जो स्थानीय रूप से WebSQL का उपयोग करके संग्रहीत हैं। प्रतिलिपि समस्या नहीं है, लेकिन मुझे यह जानने की जरूरत है कि मेरे प्रोग्राम आगे बढ़ने से पहले सभी प्रति क्रियाएं कब समाप्त हो जाएंगी।
वेबएसक्यूएल कॉल को अतुलनीय बना दिया गया है, इसलिए आमतौर पर इन चीजों को करने का एकमात्र तरीका कॉलबैक फ़ंक्शन का उपयोग करना है। हालांकि, चूंकि क्वेरी लूप के भीतर की जाती हैं, इसलिए मैं कॉलबैक फ़ंक्शन का उपयोग नहीं कर सकता क्योंकि यह कोड में दिखाए गए पहले पूर्ण क्वेरी पर आग लग जाएगी।
कोड इस प्रकार है:
function copyRecords(old_parent_id, new_parent_id, callback){
var db = openDatabase('test', '1.0', 'test', 50 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM table WHERE parent_id = ?', [old_parent_id], function(tx, results){
for(var i = 0; i < results.rows.length; i++){
db.transaction(function (tx2) {
tx2.executeSql('INSERT INTO table (name, parent_id) VALUES (?, ?)', [results.rows.item(i).name, new_parent_id], callback);
})
}
});
});
}
मैं भी कॉलबैक फ़ंक्शन जब i == results.rows.length
बुला की कोशिश की है, लेकिन है कि मुझे asure यह नहीं है कि सभी प्रश्नों पूरा कर रहे हैं।
मुझे लगता है कि आप में से कुछ को पहले भी एक ही समस्या का सामना करना पड़ा है, इसलिए इसे हल करने के तरीके पर कोई मदद नहीं है और यह सुनिश्चित कर लें कि कॉलबैक फ़ंक्शन केवल तब कहा जाता है जब लूप पूर्ण हो जाता है।
अग्रिम धन्यवाद।
यह, परिणामों से गुजरने से बाहर भीतरी transacion स्थानांतरित करने के लिए संभव है ताकि आवेषण के चक्र लेन-देन के अंदर पूरी तरह से चला जाता है? – Stan