Warten auf Events

Hallo liebe Leute,
ich würde gerne soetwas realisieren:

function contentFadeOutAndReplaceWithSpinner($element, $spinnerElement) { $element.fadeOut(200, function() { $element.html($spinnerElement.html()); $element.fadeIn(200); }); } function contentReplaceSpinnerWithResponse($element, $respElement) { $element.fadeOut(200, function() { $element.html($respElement.html()); $element.fadeIn(200); }); } $("form#someform").bind('submit', function(submitEvent) { submitEvent.preventDefault(); $form = $(this); $element = $("div.path div.to div.some div.element"); $spinnerElement = $("div.path div.to div.some div.spinner"); contentFadeOutAndReplaceWithSpinner($element, $spinnerElement); $.ajax({ method: 'POST', dataType: 'html', url: $form.attr('action'), data: $form.serialize(), success: function(response) { contentReplaceSpinnerWithResponse($element, $(response)); } }); return false; }); // Das ist jetzt nur ein kleiner Pseudocode, denn der volle Code wäre hier viel zu lange.
Da die Response zu schnell kommt, nämlich bevor das Faden von contentFadeOutAndReplaceWithSpinner() fertig ist, operieren beide auf demselben Element und es kommt zum Fehler. Schicke ich den ajax-Request nach einem Timeout von mindestens 400 ab, funktioniert das Ganze.
Jetzt die Frage: Kann man in Js irgendwie auf zwei Events passiv warten?

:hail: :hail: :hail: :hail: :hail: [quote=„do-it-yourself“]Hallo liebe Leute,
ich würde gerne soetwas realisieren:

function contentFadeOutAndReplaceWithSpinner($element, $spinnerElement) { $element.fadeOut(200, function() { $element.html($spinnerElement.html()); $element.fadeIn(200); }); } function contentReplaceSpinnerWithResponse($element, $respElement) { $element.fadeOut(200, function() { $element.html($respElement.html()); $element.fadeIn(200); }); } $("form#someform").bind('submit', function(submitEvent) { submitEvent.preventDefault(); $form = $(this); $element = $("div.path div.to div.some div.element"); $spinnerElement = $("div.path div.to div.some div.spinner"); contentFadeOutAndReplaceWithSpinner($element, $spinnerElement); $.ajax({ method: 'POST', dataType: 'html', url: $form.attr('action'), data: $form.serialize(), success: function(response) { contentReplaceSpinnerWithResponse($element, $(response)); } }); return false; }); // Das ist jetzt nur ein kleiner Pseudocode, denn der volle Code wäre hier viel zu lange.
Da die Response zu schnell kommt, nämlich bevor das Faden von contentFadeOutAndReplaceWithSpinner() fertig ist, operieren beide auf demselben Element und es kommt zum Fehler. Schicke ich den ajax-Request nach einem Timeout von mindestens 400 ab, funktioniert das Ganze.
Jetzt die Frage: Kann man in Js irgendwie auf zwei Events passiv warten?[/quote]

Möglicherweise etwas in der Richtung:

api.jquery.com/category/deferred-object/