ASP.NET A problem with jQuery and a WebService's method -


मैं एक वेबसाइव विधि asynchronously को आह्वान करता हूं।

हालांकि विधि नहीं है पूर्ण, मैं अपनी प्रगति पट्टी को अद्यतन करने के लिए उस jQuery कोड का उपयोग करता हूं (उस वेबसाइव से प्रगति मान प्राप्त करें)

  var intervalID = setInterval (अद्यतन प्रगति, 1000); फ़ंक्शन अद्यतन प्रगति () {$। एजेक्स ({प्रकार: "GET", url: "myPage.aspx / GetProgress", डेटा: "{}", सामग्री प्रकार: "एप्लिकेशन / जेसन; वर्णसेट = यूटीएफ -8", डेटा प्रकार: " Json ", async: true, सफलता: फ़ंक्शन (msg) {$ (" # परिणाम ")। पाठ = msg.d; var मान = $ (" # progressbar ")। Progressbar (" विकल्प "," मूल्य "); यदि (मान & lt; 100) {$ ("# progressbar")। प्रगति पट्टी ("मान", msg.d); $ ("# परिणाम")। पाठ (msg.d);} और {स्पष्ट अंतराल (अंतराल आईडी); }}});  

समस्या यह है, कि ब्राउज़र प्रगति मूल्य प्राप्त करने के लिए अनुरोध (हम 15 बार कहते हैं) भेजते हैं, लेकिन यह अनुरोध प्रतीक्षा कर रहा है, जबकि अतुल्यकालिक विधि पूर्ण हो गई है। उसके बाद, मेरा सर्वर ब्राउज़र के लिए 15 गुणा मान भेजता है।

अनुरोध क्यों अतुल्यकालिक विधि को पूरा करने की प्रतीक्षा कर रहे हैं ??

< Div class = "post-text" itemprop = "text">

जब आप सेट करते हैं तो आप अनुक्रमिक रूप से और ब्राउज़र को लॉक करने के लिए अनुरोध कह रहे हैं। यदि आप UI को अपडेट करना चाहते हैं, तो आपको एक अंतराल के बजाय एक समय-सीमा निर्धारित करने की आवश्यकता है, इसलिए यूआई के पास अनुरोधों के बीच अद्यतन करने का समय है, लेकिन यह async बंद पूरी तरह चालू करना और इसके बजाय उपयोग करना बेहतर होगा , यहाँ मेरा क्या मतलब है:

  फ़ंक्शन अद्यतन प्रगति () {$। एजेक्स ({प्रकार: "GET", url: "myPage.aspx / GetProgress", डेटा: "{}", contentType : "Application / json; charset = utf-8", डेटा प्रकार: "json", सफलता: फ़ंक्शन (msg) {$ ("# परिणाम")। Text = msgd; var value = $ ("# progressbar") ("मूल्य", "मान"); यदि (मान & lt; 100) {$ ("# progressbar")। Progressbar ("value", msg.d); $ ("# परिणाम")। पाठ (msg) .डी);} और {setTimeout (अपडेट प्रगति, 1000);}}}); }  

इस अनुरोध को पूरा करने देता है, ब्राउज़र या UI थ्रेड को लॉक नहीं करता है, और 1000ms विलंब के साथ पहली बार समाप्त होने पर अगली अनुरोध को रोकता है, बस आवश्यक होने पर समायोजित करें अन्यथा यह कहना है कि उपयोगकर्ता के पास 1200ms की विलंबता है, वर्तमान में आप उन अनुरोधों को रँग कर रहे हैं जो ओवरलैप हो रहे हैं ... दोहराया AJAX स्थिति में उपयोग करने के लिए यह सबसे अच्छा नहीं है, क्योंकि आपको नहीं पता कि अनुरोध कितना समय है ले जाएगा।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -