Your code, in principle, is working:
$.when( $(".obj1").hide(700).promise(), $(".obj2").fadeOut(800).promise() ).done(function() { console.log('fin') });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="obj1">1</div> <div class="obj2">2</div>
Animation is executed at the same time, after both animations are completed, the code is executed.
Describe in more detail what did not work out for you and what you wanted to do.
How do I use a hideback only from hide
If you only need a single animation callback, this is much easier to do: Put the function with the 2m argument to hide() (or show() , or fadeIn() , etc.)
$(".obj1").hide(700,function() { console.log('fin obj1') }) $(".obj2").fadeOut(1000,function() { console.log('fin obj2') })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="obj1">1</div> <div class="obj2">2</div>