From ffaac3232dfe0e7cc1b83a172c43fea9aec090c7 Mon Sep 17 00:00:00 2001 From: Sean McArthur <sean.monstar@gmail.com> Date: Thu, 12 Jul 2012 19:05:00 -0700 Subject: [PATCH] use jQuery.promise to trigger callbacks instead of setTimeout this makes sure callbacks for animations truly are called only after the animation has finished. before, it'd be possible to trigger slightly ahead because of setTimeout tomfoolery --- resources/static/pages/js/page_helpers.js | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/resources/static/pages/js/page_helpers.js b/resources/static/pages/js/page_helpers.js index 22df8dbbc..9ec528c6b 100644 --- a/resources/static/pages/js/page_helpers.js +++ b/resources/static/pages/js/page_helpers.js @@ -73,26 +73,19 @@ BrowserID.PageHelpers = (function() { function replaceFormWithNotice(selector, onComplete) { $("form").hide(); - $(selector).fadeIn(ANIMATION_SPEED); - // If there is more than one .forminputs, the onComplete callback is called - // multiple times, we only want once. - onComplete && setTimeout(onComplete, ANIMATION_SPEED); + $(selector).fadeIn(ANIMATION_SPEED).promise().done(onComplete); } function replaceInputsWithNotice(selector, onComplete) { $('.forminputs').hide(); - $(selector).stop().hide().css({opacity:1}).fadeIn(ANIMATION_SPEED); - // If there is more than one .forminputs, the onComplete callback is called - // multiple times, we only want once. - onComplete && setTimeout(onComplete, ANIMATION_SPEED); + $(selector).stop().hide().css({opacity:1}).fadeIn(ANIMATION_SPEED) + .promise().done(onComplete); } function showInputs(onComplete) { $('.notification').hide(); - $('.forminputs').stop().hide().css({opacity:1}).fadeIn(ANIMATION_SPEED); - // If there is more than one .forminputs, the onComplete callback is called - // multiple times, we only want once. - onComplete && setTimeout(onComplete, ANIMATION_SPEED); + $('.forminputs').stop().hide().css({opacity:1}).fadeIn(ANIMATION_SPEED) + .promise().done(onComplete); } function emailSent(onComplete) { -- GitLab