What's C#'s await equivalent in javascript/jquery? -


मैं bootbox

  Bootbox.dialog ({शीर्षक: "समूह", बटन: {सफलता: {लेबल: "ठीक है", वर्गनाम: "बीटीएन-सफलता", कॉलबैक: फ़ंक्शन () {postForm ();}}}}); Function postForm () {$ .ajax ({type: "POST", url: $ ("# add-group")। Val (), डेटा: $ ("# form")। Serialize (), सफलता: फ़ंक्शन ( डेटा) {वापसी सच;}, त्रुटि: कार्य (XMLHttpRequest, textStatus, errorThrown) {वापसी झूठी;}}); }   

जब मैं "ओके" बटन पर क्लिक करता हूँ, जब तक कि मैं इस तरह गलत मान वापस नहीं लौटाऊं:

  callback: function () {return false; }   

संवाद बंद हो जाएगा।

कॉलबैक फ़ंक्शन में, मैं postForm को बुला रहा हूं जो एक फ़ंक्शन है जो एक AJAX कॉल करता है मेरे सर्वर साइड को कुछ ऑपरेशन करने के लिए। उस ऑपरेशन के परिणाम के आधार पर, मैं अभी भी संवाद को चालू रखना चाहूंगा।

लेकिन क्योंकि यह एक एजेएक्स कॉल है, और परिणाम आने के लिए कुछ समय लगता है, डायलॉग तुरंत पोस्टफॉर्म () मेरे परिणाम की परवाह किए बिना

मैं एजेक्स कॉल के परिणाम की प्रतीक्षा करने के लिए जावास्क्रिप्ट कैसे बता सकता हूं?

अगर मैं ऐसा कुछ कर सकता हूं तो यह अच्छा होगा:

 < कोड> कॉलबैक: फ़ंक्शन () {var परिणाम = पोस्टफॉर्म (इंतजार); वापसी परिणाम; }    

मुझे लगता है कि आप वास्तव में क्या पूछ रहे हैं।

.promise ()

एक निश्चित ऑब्जेक्ट को वापस लेने के लिए जब एक निश्चित प्रकार के सभी कार्यों को संग्रहित, कतारबद्ध या नहीं, उदा।

  var div = $ ("& lt; div & gt;"); div.promise ()। done (function (arg1) {// आग लग जाएंगे और चेतावनी "सच" चेतावनी (यह === div & amp; arg1 === div);});   

अधिक जानकारी के लिए देखें:

हटाए गए वादे एसिन्क व्यवहार के करीब हैं :

Deferred.promise ()

deferred.promise () विधि किसी अन्य कोड को उसके आंतरिक अनुरोध की प्रगति या स्थिति के साथ हस्तक्षेप करने से रोकने के लिए एसिंक्रोनस फ़ंक्शन की अनुमति देता है। वादा केवल अतिरिक्त संचालकों को संलग्न करने के लिए या राज्य ( तब , किए गए , असफल , हमेशा , पाइप , प्रगति , और राज्य ), लेकिन जो लोग राज्य ( संकल्प , < कोड> अस्वीकार करें , सूचित करें , हल , अस्वीकार करें , और notifyWith )।

यदि लक्ष्य प्रदान किया जाता है, तो deferred.promise () उस पर तरीकों को संलग्न करेगा और फिर एक वस्तु बनाने के बजाय इस ऑब्जेक्ट को वापस करेगा। वादा व्यवहार को उस ऑब्जेक्ट से जोड़ने के लिए उपयोगी हो सकता है जो पहले से मौजूद है।

यदि आप डिफर्ड बना रहे हैं, तो डिफर्ड के संदर्भ को रखें, ताकि इसे किसी बिंदु पर हल किया जा सके या अस्वीकार कर दिया जा सके। deferred.promise () के माध्यम से केवल वादा वस्तु वापस लौटें, इसलिए अन्य कोड कॉलबैक को पंजीकृत कर सकते हैं या वर्तमान स्थिति का निरीक्षण कर सकते हैं।

उदाहरण:

  फ़ंक्शन asyncEvent () {var dfd = नया jQuery.Deferred (); // एक यादृच्छिक अंतराल सेटटाइमआउट (फ़ंक्शन () {dfd.resolve ("हुर्रे");}, मठ.फ्लूर (400 + मठ। रैंडम () * 2000) के बाद हल करें; // एक यादृच्छिक अंतराल setTimeout (समारोह () {dfd.reject ("क्षमा करें") के बाद अस्वीकार;}, Math.floor (400 + मठ। रैंडम () * 2000)); // प्रत्येक आधे सेकंड सेटटाइमआउट (कार्य करना) ("काम कर रहे हैं ...") को दिखाएँ (यदि (dfd.state () === "लंबित") {dfd.notify ("काम कर रहा है ..."); setTimeout (काम, 500);}}, 1); // वादा करो तो कॉलर डिफर्ड रिटर्न dfd.promise () बदल नहीं सकता; } // asyncEvent $ के लिए एक पूर्ण, असफल और प्रगति हैंडलर संलग्न करें। जब (asyncEvent ())। तब (फ़ंक्शन (स्थिति) {चेतावनी (स्थिति + ", चीज़ें अच्छी तरह से चल रही हैं");}, फ़ंक्शन (स्थिति) {चेतावनी (स्थिति + ", आप इस समय विफल होती हैं");}, फ़ंक्शन (स्थिति) {$ ("body") .append (status);});   

अधिक जानकारी के लिए, डीफ़र्ड ऑब्जेक्ट के लिए दस्तावेज़ीकरण देखें:

jQuery.when ()

एक या अधिक ऑब्जेक्ट्स के आधार पर कॉलबैक फ़ंक्शन को निष्पादित करने का एक तरीका प्रदान करता है, आमतौर पर डिफर्ड ऑब्जेक्ट्स जो एसिंक्रोनस इवेंट्स का प्रतिनिधित्व करती हैं। उदाहरण:

  $। जब ($। एजेक्स ("परीक्षण एएसपीएक्स "))। तब (फ़ंक्शन (डेटा, टेक्स्टस्टैटस, जेकएक्सएचआर) {चेतावनी (jqXHR.status); // अलर्ट 200});    

Comments

Popular posts from this blog

c# - passing input text from view to contoller with FacebookContext using Facebook app -

ios - Does Core Data autoupdate a many to many relationship on saving -

Calling a C++ function from C# by passing a string with variable size to it -