2013-06-24 5 views
9

एचटीएमएल 5 डेटाबेस (एसक्लाइट) के बारे में बात करते हुए, मैंने हाल ही में transaction और executeSql कार्यों दोनों से सफलता/त्रुटि कॉलबैक का उपयोग किया है। मैंने पाया है कि इन दो कार्यों के लिए, सफलता/त्रुटि कॉलबैक क्रम उलट है, उदाहरण के लिए:एचटीएमएल 5 डाटाबेस - लेनदेन वीएस executeSql कॉलबैक ऑर्डर

लेनदेन

database.transaction(function(tx){ 
    //--- do something 
}, function(){ 
    //--- error handling 
}, function(){ 
    //--- success handling 
}); 

executeSql

tx.executeSql(sqlStatement, [], successCallback, errorCallback); 

शायद इसे एक महत्वपूर्ण नहीं है जानना, लेकिन मैं जानना चाहता हूं कि इस उलट आदेश के लिए कोई कारण है .. IMHO, प्रत्येक फंक्शन के लिए एक ही कॉलबैक ऑर्डर होना उपयोगी होगा, जैसा आपने सीखा एक का उपयोग कैसे करें, आप जानते हैं कि अन्य सभी कैसे काम करते हैं!

अग्रिम धन्यवाद, का संबंध

+0

क्या आपने कभी इसे समझ लिया है या इसका उत्तर प्राप्त किया है? मैं भी अंतर को समझने की कोशिश कर रहा था क्योंकि मैं अपने पहले स्क्लाइट इंटरफेस को एक साथ रख रहा हूं। यह मुझे भ्रम पैदा कर रहा है क्योंकि मैं सफलता सीबी और त्रुटि सीबी को दो कॉल के बीच उलटा देखता हूं। एक पारंपरिक "तैयार" कथन की तरह db.transaction है जबकि executeSql वास्तव में डीबी कॉल निष्पादित करता है? – rolinger

+0

नहीं, दुर्भाग्य से अब तक कोई जवाब नहीं है .. :(मैं शायद इसके पीछे कारण जानने के लिए मर जाऊंगा :) – BeNdErR

उत्तर

1

मैं [the main RFC document] करने के लिए यहाँ जिक्र कर रहा हूँ: और यह ध्यान देने योग्य है कि

इस विनिर्देशन सक्रिय रखरखाव और वेब एप्लीकेशन कार्य समूह नहीं है में नहीं रह गया है इसे आगे बनाए रखने का इरादा है।

फिर भी, प्रश्न पर वापस जाएं। इसके पीछे तर्क in the archives of the discussion mailing lists

पर तर्क हो सकता है कि लोग आम तौर पर एपीआई कैसे बनाते हैं।

ध्यान देने योग्य पहली बात यह है कि दोनों कार्यों के विभिन्न कॉलबैक तर्क वैकल्पिक हैं, इसलिए आप उन्हें कम से कम उपयोग किए जाने वाले सबसे अधिक उपयोग से ऑर्डर करना चाहते हैं। यदि आप इसे विपरीत क्रम में रखते हैं तो आप लोगों को खाली कार्यों की घोषणा करने के लिए मजबूर करते हैं।

तो, एक लेनदेन में, सफलता प्रबंधन से त्रुटि प्रबंधन अधिक महत्वपूर्ण है। लेनदेन "गलती से" विफल होने के लिए "डिज़ाइन किए गए" हैं, और अत्यंत महत्वपूर्ण हैं क्योंकि हम समय-समय पर विफल होने और उनकी विफलता को संभालने की उम्मीद करते हैं।

इसके विपरीत, एक क्वेरी को बहुत अधिक असफल होने के बिना अपने परिणाम वापस करना चाहिए। जबकि, जब हमें सफलता मिलती है, और यह वास्तव में अक्सर होता है हम अक्सर इस तरह के प्रश्न के परिणाम को संसाधित करना चाहते हैं, और यह तब होता है जब आप SQLStatementCallback callback का उपयोग करते हैं जो SQLVoidCallback successCallback नहीं है। यह कॉलबैक सफलता को संभालने के लिए नहीं है, लेकिन बयान के परिणामों को स्पष्ट रूप से संभालने के लिए (यानी, परिणामों को संसाधित करने के लिए)।

transaction और executeSql घोषणाओं की तुलना करें।

संबंधित मुद्दे