/ एक्सटीजे 4.1 रेस्ट प्रॉक्सी का उपयोग करके "बैच" अनुरोध बनाएं - जसन, आराम, एक्सटज, एक्सटज 4.1, बैच-प्रोसेसिंग

ExtJS 4.1 REST Proxy - json, rest, extjs, extjs4.1, बैच-प्रोसेसिंग का उपयोग करके "बैच" अनुरोध बनाएं

मेरे पास दो मॉडल / प्रॉक्सी / स्टोर हैं जिनके साथ मैं चिंतित हूं Questions तथा Choices। दोनों JSON के रूप में REST सर्वर से डेटा प्राप्त करते हैं। वर्तमान में मेरी प्रक्रिया इस प्रकार है:

            // load numQuestions records from store.Questions
var qs = Ext.getStore("Question");
//... loadmask, etc.
qs.load({
scope : this,
params : {
limit : numQuestions
},
callback : function() {
this.createQuestionCards(numQuestions);
}
});

एक बार मेरे पास है Questions, मैं पाश और के माध्यम से लाने के लिए Choices जो प्रत्येक के लिए प्रासंगिक हैं Question पसंद:

    for ( i = 0; i < numQuestions; i++) {
// ... misc ...
Assessor.questionChoices[i] = qs.getAt(i).choices();
// ...misc...
},

यह अच्छी तरह से काम करता है, सिवाय इसके कि यह एक बनाता हैहर लूप पुनरावृत्ति के लिए XMLHTTPRequest। 0.15 सेकंड के क्षेत्र में न्यूनतम प्रतिक्रिया समय के साथ, यह एन <40 के लिए ठीक है। एक बार संख्या 200 हो जाती है, जो एक सामान्य उपयोग का मामला होना चाहिए, देरी बुरा है।

मैं अनुरोधों को "बैच" करने के लिए एक्सटीजेएस कैसे प्राप्त कर सकता हूं और लूप बॉडी के बाद उन्हें भेज सकता हूं? उदाहरण के लिए:

var choiceBatch = qs.createBatch();
for ( i = 0; i < numQuestions; i++) {
// ... misc ...
Assessor.questionChoices[i] = choiceBatch.getAt(i).choices();
// ...misc...
};
choiceBatch.execute();

उत्तर:

जवाब के लिए 0 № 1

The Ext.data.proxy.Rest एक विन्यास विकल्प है बैचएक्टेशन और चूंकि यह है मूल रूप से एक अजाक्सप्रॉक्सी विभिन्न तरीकों के साथ यह संभवत: उसी तरह काम करेगा जैसे कि अजाक्सप्रॉक्सी।


जवाब के लिए 0 № 2

चूंकि मुझे मल्टीपार्ट के साथ बाकी बैच के बारे में स्पष्ट जवाब नहीं मिल रहा है ...

के साथ अपने दम पर परीक्षण batchActions=true में Ext.data.proxy.Rest v4.2.1 परिणाम यह है कि बैच केवल एक ही स्टोर और HTTP विधि के भीतर है। ()batchActions REST के लिए डिफ़ॉल्ट रूप से)

इसका मतलब है कि यदि 200 पोस्ट और 1 डिलीट हैं और आप store.sync () कॉल करते हैं, तो यह 2 अनुरोधों में बैच जाएगा, POST अनुरोध बॉडी को एकल रिकॉर्ड के बजाय एक सरणी रिकॉर्ड के साथ लपेटा जाएगा।

मैं देख रहा हूँ कि क्या यह सभी GET, POST, PUT और DELETE के साथ सभी स्टोर्स को मल्टीपार्ट या मिश्रित के साथ बैच सकता है लेकिन परिणाम नकारात्मक है। (चेक आउट OData बैच प्रसंस्करण)

ओपी के बारे में, जो आप देख रहे हैं वह मॉडल एसोसिएशन है। एक बार जब आप बनाएँ Questions तथा Choices एक्सट्रीम मॉडल और सर्वर को नेस्टेड जोंस डेटा के साथ प्रतिक्रिया करने दें (इसलिए Questions बच्चे होते हैं Choices अनुरोध में एम्बेडेड) Ext बनाएगा question साथ रिकॉर्ड question.choices() बच्चे की दुकान स्वचालित रूप से।