Was erwartet C # in Javascript / jquery?

8
___ qstnhdr ___ Was erwartet C # in Javascript / jquery? ___ answer23263530 ___

Sie können nicht. Es gibt kein Äquivalent von bootbox in JS.

Sie müssen es simulieren, indem Sie beim Aufruf von postForm false zurückgeben und dann nach Ausführung der Callback-Funktion aus dem AJAX-Aufruf den Dialog schließen.

    
___ answer23263726 ___

Ich denke Promises ist genau das, was du fragst.

postForm()

Gibt ein Promise-Objekt zurück, das beobachtet werden soll, wenn alle Aktionen eines bestimmten Typs, der an die Sammlung gebunden ist, in die Warteschlange gestellt wurde oder nicht, beendet wurden. z.B.

%Vor%

Weitere Informationen finden Sie unter Ссылка

Verzögerte Versprechen sind näher am asynchronen Verhalten :

%code%

Die deferred.promise () -Methode ermöglicht einer asynchronen Funktion, anderen Code daran zu hindern, den Fortschritt oder Status seiner internen Anforderung zu beeinflussen. Das Versprechen macht nur die aufgeschobenen Methoden verfügbar, die benötigt werden, um zusätzliche Handler anzuhängen oder den Status zu bestimmen ( %code% , %code% , %code% , %code% , %code% , %code% und %code% ), aber keine die den Status ändern ( %code% , %code% , %code% , %code% , %code% und %code% ).

Wenn das Ziel angegeben wird, hängt %code% die Methoden an und gibt dann dieses Objekt zurück, anstatt ein neues Objekt zu erstellen. Dies kann nützlich sein, um das Promise-Verhalten an ein Objekt anzuhängen, das bereits existiert.

Wenn Sie einen aufgeschobenen Artikel erstellen, behalten Sie einen Verweis auf den verzögerten Artikel bei, damit er zu einem bestimmten Zeitpunkt aufgelöst oder zurückgewiesen werden kann. Geben Sie nur das Promise-Objekt über %code% zurück, damit anderer Code Callbacks registrieren oder den aktuellen Status überprüfen kann.

Beispiel:

%Vor%

Weitere Informationen finden Sie in der Dokumentation für das verzögerte Objekt: Ссылка

%code%

Bietet eine Möglichkeit, Callback-Funktionen basierend auf einem oder mehreren Objekten auszuführen, normalerweise verzögerte Objekte, die asynchrone Ereignisse darstellen. Beispiel:

%Vor%     
___ answer23269608 ___

JavaScript hat (zur Zeit) kein Sprachäquivalent von %code% / %code% . Es gibt verschiedene Versprechensbibliotheken , die für JavaScript zur Verfügung stehen und Ihnen eine ungefähre Entsprechung zum %code% -Typ bieten. Dies ist ein guter Schritt über die rohen Rückrufe hinaus, aber Sie haben immer noch Probleme mit verschachtelten Verschachtelung oder Callback-Spaghetti in allen, außer den einfachsten Szenarien.

JavaScript ECMAScript 6 ("Harmony") soll Generatoren enthalten. ES6 ist auf dem besten Weg, dieses Jahr offiziell zu werden, aber es wird wahrscheinlich noch einige Zeit dauern, bevor Sie sicher davon ausgehen können, dass die Browser Ihrer Benutzer Generatoren unterstützen.

Durch die Kombination von Generatoren mit Versprechen können Sie eine echte% co_de erreichen % / %code% entspricht.

    
___ answer23281736 ___

Sie können ES6-Generatoren und das Feature %code% mit dem Google Traceur-Compiler verwenden, wie ich bereits beschrieben habe hier .

Es gibt einige Rückmeldungen vom Team von Traceur, die angeben, dass es sich um ein Tool der Produktionsqualität. Es hat auch experimentelle Unterstützung für %code% .

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ answer31352908 ___

Dies beantwortet zwar nicht die "Entsprechung von C # 's erwarten in JavaScript?" Frage, der Code in der Frage kann gemacht werden, um ziemlich einfach zu arbeiten. Die Funktion %code% gibt ein Objekt zurück, so dass Sie den angezeigten Code wie folgt anpassen können:

%Vor%

Und dann wird der Ajax-Aufruf angepasst an:

%Vor%     
___ answer29190490 ___

Sie könnten asyncawait in Betracht ziehen, mit dem Sie Code wie folgt schreiben können:

%Vor%

Anstelle der folgenden

%Vor%     
___ answer44925874 ___

Mit der Einführung von ES2017 ist die Antwort auf diese Frage asynchron / abwarten.
Es ist DIE JS-Lösung für "Rückruf-Hölle". Sie können ein Versprechen (Aufgabenäquivalent) in einer asynchronen Funktion erwarten.
Anders als in C # gibt es keine Möglichkeit, eine Async-Funktion in einer synchronen Funktion aufzurufen.

Siehe ECMA-Entwurf 262 oder MDN für nähere Informationen.

Beispiel:

%Vor%     
___ tag123asyncawait ___ Dies umfasst das asynchrone Programmiermodell, das von verschiedenen Programmiersprachen unterstützt wird, unter Verwendung der Schlüsselwörter async und await. ___ tag123bootbox ___ Bootbox.js ist eine kleine JavaScript-Bibliothek, mit der Sie programmatische Dialogfelder mit Bootstrap-Modals erstellen können. ___
Null Reference 24.04.2014, 08:15
quelle

7 Antworten

6

Ich denke Promises ist genau das, was du fragst.

.promise()

Gibt ein Promise-Objekt zurück, das beobachtet werden soll, wenn alle Aktionen eines bestimmten Typs, der an die Sammlung gebunden ist, in die Warteschlange gestellt wurde oder nicht, beendet wurden. z.B.

%Vor%

Weitere Informationen finden Sie unter Ссылка

Verzögerte Versprechen sind näher am asynchronen Verhalten :

deferred.promise()

Die deferred.promise () -Methode ermöglicht einer asynchronen Funktion, anderen Code daran zu hindern, den Fortschritt oder Status seiner internen Anforderung zu beeinflussen. Das Versprechen macht nur die aufgeschobenen Methoden verfügbar, die benötigt werden, um zusätzliche Handler anzuhängen oder den Status zu bestimmen ( then , done , fail , always , pipe , progress und state ), aber keine die den Status ändern ( resolve , reject , notify , resolveWith , rejectWith und notifyWith ).

Wenn das Ziel angegeben wird, hängt deferred.promise() die Methoden an und gibt dann dieses Objekt zurück, anstatt ein neues Objekt zu erstellen. Dies kann nützlich sein, um das Promise-Verhalten an ein Objekt anzuhängen, das bereits existiert.

Wenn Sie einen aufgeschobenen Artikel erstellen, behalten Sie einen Verweis auf den verzögerten Artikel bei, damit er zu einem bestimmten Zeitpunkt aufgelöst oder zurückgewiesen werden kann. Geben Sie nur das Promise-Objekt über deferred.promise() zurück, damit anderer Code Callbacks registrieren oder den aktuellen Status überprüfen kann.

Beispiel:

%Vor%

Weitere Informationen finden Sie in der Dokumentation für das verzögerte Objekt: Ссылка

jQuery.when()

Bietet eine Möglichkeit, Callback-Funktionen basierend auf einem oder mehreren Objekten auszuführen, normalerweise verzögerte Objekte, die asynchrone Ereignisse darstellen. Beispiel:

%Vor%     
Pranav Singh 24.04.2014, 08:29
quelle
7

JavaScript hat (zur Zeit) kein Sprachäquivalent von async / await . Es gibt verschiedene Versprechensbibliotheken , die für JavaScript zur Verfügung stehen und Ihnen eine ungefähre Entsprechung zum Task -Typ bieten. Dies ist ein guter Schritt über die rohen Rückrufe hinaus, aber Sie haben immer noch Probleme mit verschachtelten Verschachtelung oder Callback-Spaghetti in allen, außer den einfachsten Szenarien.

JavaScript ECMAScript 6 ("Harmony") soll Generatoren enthalten. ES6 ist auf dem besten Weg, dieses Jahr offiziell zu werden, aber es wird wahrscheinlich noch einige Zeit dauern, bevor Sie sicher davon ausgehen können, dass die Browser Ihrer Benutzer Generatoren unterstützen.

Durch die Kombination von Generatoren mit Versprechen können Sie eine echte% co_de erreichen % / async entspricht.

    
Stephen Cleary 24.04.2014 12:57
quelle
4

Sie können nicht. Es gibt kein Äquivalent von await in JS.

Sie müssen es simulieren, indem Sie beim Aufruf von postForm false zurückgeben und dann nach Ausführung der Callback-Funktion aus dem AJAX-Aufruf den Dialog schließen.

    
fredrik 24.04.2014 08:19
quelle
1

Sie können ES6-Generatoren und das Feature yield mit dem Google Traceur-Compiler verwenden, wie ich bereits beschrieben habe hier .

Es gibt einige Rückmeldungen vom Team von Traceur, die angeben, dass es sich um ein Tool der Produktionsqualität. Es hat auch experimentelle Unterstützung für async/await .

    
Noseratio 24.04.2014 23:37
quelle
1

Sie könnten asyncawait in Betracht ziehen, mit dem Sie Code wie folgt schreiben können:

%Vor%

Anstelle der folgenden

%Vor%     
Jay 22.03.2015 03:04
quelle
0

Dies beantwortet zwar nicht die "Entsprechung von C # 's erwarten in JavaScript?" Frage, der Code in der Frage kann gemacht werden, um ziemlich einfach zu arbeiten. Die Funktion bootbox.dialog gibt ein Objekt zurück, so dass Sie den angezeigten Code wie folgt anpassen können:

%Vor%

Und dann wird der Ajax-Aufruf angepasst an:

%Vor%     
Tieson T. 11.07.2015 02:47
quelle
0

Mit der Einführung von ES2017 ist die Antwort auf diese Frage asynchron / abwarten.
Es ist DIE JS-Lösung für "Rückruf-Hölle". Sie können ein Versprechen (Aufgabenäquivalent) in einer asynchronen Funktion erwarten.
Anders als in C # gibt es keine Möglichkeit, eine Async-Funktion in einer synchronen Funktion aufzurufen.

Siehe ECMA-Entwurf 262 oder MDN für nähere Informationen.

Beispiel:

%Vor%     
Stefan Steiger 05.07.2017 12:09
quelle

Tags und Links