use $.Deferred() to control animation