2012-06-14 10 views

उत्तर

4

मुझे लगता है कि यह आपके उपयोग परिदृश्यों पर निर्भर करता है, और आप कॉलिंग कोड को कितना बदलना चाहते हैं। मुझे लगता है कि आप दो विकल्प हैं:

विकल्प 1: (बुला) ग्राहक के लिए कोई परिवर्तन नहीं कोड

अजीब तरह पर्याप्त एनोटेट source for Backbone.syncsync विधि अधिभावी के लिए एक संभावित कारण के रूप में 'बैचिंग' देता है:

एक अनुरोध में तेज़-फायर अपडेट बैच करने के लिए setTimeout का उपयोग करें।

वास्तव में सिंक पर सहेजने के बजाय, एक कतार में अनुरोध जोड़ें, और केवल हर बार बैच-सेव करें। _.throttle या _.delay आपकी मदद कर सकते हैं।

विकल्प 2: बदलें क्लाइंट कोड

वैकल्पिक रूप से, बजाय अपने मॉडल पर save बुलाने की, तो आप किसी प्रकार का save विधि का संग्रह करने के लिए जोड़ सकते हैं। आपको ट्रैक करना होगा कि कौन से मॉडल वास्तव में संशोधित किए गए थे और इसलिए अद्यतन की आवश्यकता में, जहां तक ​​मैं कह सकता हूं, बैकबोन केवल जानता है कि वे नए हैं या नहीं (लेकिन मैं इसके बारे में गलत हो सकता हूं)।

+0

से बाहर आ अगर मैं '_.throttle' का उपयोग करें या' नियंत्रित करने के लिए उपयोग करें _.delay', मैं एक एकल AJAX अनुरोध में एकाधिक 'अपडेट' कैसे भेजूं? मॉडल की सरणी? – Henry

+1

कई तरीके हैं, और वास्तव में यह डेटा पहुंच के आपके पैटर्न पर निर्भर करता है। यहां एक चर्चा है: http://stackoverflow.com/questions/411462/restful-way-to-create-multiple-items-in-one-request – stusmith

1

यहां बताया गया है मैंने किया

Backbone.originalSync = Backbone.sync; 

Backbone.sync = function (method, model, options) { 
    // 
    // code to extend sync 
    // 

    // calling original sync 
    Backbone.originalSync(method, model, options); 
} 

मेरे लिए ठीक काम करता है, और मैं इसे हर ajax अनुरोध किसी भी मॉडल या संग्रह

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