Ich habe ein JavaScript-Widget, das Standard-Erweiterungspunkte bietet. Einer von ihnen ist die beforecreate
Funktion. Sie sollte zurückgeben false
um zu verhindern, dass ein Artikel erstellt wird.
Ich habe einen Ajax-Aufruf in dieser Funktion mit jQuery hinzugefügt:
beforecreate: function (node, targetNode, type, to) {
jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
function (result) {
if (result.isOk == false)
alert(result.message);
});
}
Aber ich möchte verhindern, dass mein Widget das Element erstellt, also sollte ich zurückgeben false
in der Mutterfunktion, nicht im Rückruf. Gibt es eine Möglichkeit, eine synchrone AJAX-Anfrage mit jQuery oder eine andere in-Browser-API durchzuführen?
36 Stimmen
Der richtige Weg, um das zu lösen wäre, um Ihre Widget-Erweiterung Punkt Verwendung Versprechen neu zu schreiben. Auf diese Weise können Sie leicht eine asynchrone Aktion (wie eine Ajax-Anfrage) als
beforecreate
.3 Stimmen
Ich schlage die Sajak-Funktion vor. Haben wir einen Buchstaben T? Ja, Vanna, gib mir 3 T's.
2 Stimmen
@Kos ist genau richtig. Sync XHR ist hier nicht erforderlich
4 Stimmen
Wenn Leute mich nach einem Rat fragen, wenn sie mit Javascript anfangen, sage ich: Akzeptieren Sie den asynchronen Charakter von Javascript, versuchen Sie nicht, dagegen anzukämpfen.
1 Stimmen
Sie können versuchen, mit embeddedjs.com
6 Stimmen
Diese Frage ist vergleichbar mit der Frage "Wie speichere ich meine Benutzerpasswörter im Klartext?" Sicher gibt es eine Antwort, aber tun Sie es nicht.
0 Stimmen
Diese Kommentare sind wie "Ich weiß, was du gefragt hast, aber da mir die Art und Weise, wie du es tust, nicht gefällt, werde ich keine sinnvolle Antwort geben und dir nur sagen, dass du deine Lebensentscheidungen überdenken solltest". Manchmal sind synchrone Gespräche notwendig.