2013-01-18 43 views
10

मैं एक बाहरी प्रोजेक्ट में संचार के साथ एकीकृत, मेरी एक परियोजना पर रीढ़ की हड्डी का उपयोग कर रहा हूं। मैं रिकॉर्ड्स के वास्तविक समय अद्यतन का उपयोग करना चाहता हूं। चूंकि मेरे पास इस बाहरी एप्लिकेशन के मुख्य बैकएंड तक पहुंच नहीं है, और वे न तो वेबस्केट सर्वर और न ही लंबे मतदान वाले एंडपॉइंट प्रदान करते हैं, मैं मूल रूप से सेट इंटरवल के साथ नियमित मतदान करने और 50 सेकंड की अवधि के साथ छोड़कर विकल्प छोड़ देता हूं । यह काफी अच्छा काम कर रहा है। मेरी समस्या एज केस है। अगर किसी कारण से एपीआई अनुरोध लटकता है, 50 से अधिक सेकंड के लिए, मान लीजिए, मैं तुरंत एक नया अनुरोध शुरू कर दूंगा। इसका मतलब है, अब 2 लटकाने के अनुरोध, जो अंततः जोड़ देंगे। अनुरोध के लिए टाइमआउट सेट करने का कोई तरीका है? मुझे पता है कि सभी अनुरोध Backbone.sync की ओर ले जाते हैं, लेकिन मैं स्रोत कोड की जांच कर रहा था और मुझे XmlHttpRequest के लिए टाइमआउट सेट करने का कोई व्यवहार्य तरीका नहीं दिख रहा है। क्या यह साफ तरीके से और बिना ओवरराइटिंग व्यवहार करने का कोई तरीका है? या क्या अन्य समाधान/कामकाज हैं?Backbone.js: Backbone.sync कार्यान्वयन के लिए टाइमआउट परिभाषित करें

+0

"मुझे पता है कि सभी अनुरोध बैकबोन.sync की ओर ले जाते हैं" - मुझे लगता है कि यहां अधिक महत्वपूर्ण तथ्य यह है कि सभी घटनाएं '$ .ajax()' तक पहुंच जाती हैं! रीढ़ की हड्डी 'fetch() 'और' सिंक() 'अनुरोधों के संबंध में बहुत सारे प्रश्न हल करता है। –

उत्तर

20

बस fetch करने के लिए options बहस के दौरान अपनी timeout:milliseconds विकल्प गुजरती हैं। विकल्प सीधे jQuery.ajax के लिए पारित करने के लिए, जो निम्न स्तर एक्सएचआर कॉल हैंडल:

:

collection.fetch({timeout:50000}); 

वैकल्पिक रूप से आप अपने आवेदन स्टार्टअप में jQuery.ajaxSetup फोन करके सब आपके आवेदन द्वारा किए गए अनुरोधों के लिए एक वैश्विक टाइमआउट सेट कर सकते हैं

$.ajaxSetup({timeout:50000}); 
+0

मैं देखता हूं, इसलिए कुछ और विकल्प हैं जिन्हें ट्यून सिंक विधि में पास किया जा सकता है जो दस्तावेज नहीं हैं। बीटीडब्ल्यू मैं {पूरा: functioname} जैसे कुछ भी पास कर सकता हूं? अगर मैं लंबे मतदान को लागू करना चाहता हूं। – ChuckE

+1

आप जो भी विकल्प चाहते हैं उसे पास कर सकते हैं, कोई सत्यापन नहीं है। बैकबोन उनमें से कुछ का उपयोग करता है, इसमें कुछ और जोड़ता है, और फिर इसे jQuery.ajax पर भेजता है, जिसे भी दस्तावेज किया जाता है। यदि आप चाहें तो आप 'पूर्ण' हैंडलर सेट कर सकते हैं। – jevakallio