синтаксис для Jquery.deferred, обещая синхронную функцию возврата

Быстрый вопрос о том, как использовать Jquery.deferred, чтобы медленная синхронная функция возвращала обещание. На данный момент я сделал следующее:

function sayIt(ms) {
    setTimeout( function() { console.log('what I say'); }, ms);
} 

function doIt() {
    return $.Deferred( function() { sayIt(2000); }).promise();
}


doIt().then( function() { console.log('ah'); });

sayIt (2000) всегда проходит, но цепочечная функция после «затем» никогда не стреляет

Если я сделаю это:

doIt().then( console.log('ah'));

«ах» подходит сразу, а затем «то, что я говорю»; 2000 мс позже - то, что я хочу, конечно, наоборот - что через две секунды я получаю «то, что я говорю». а затем «ах»; сразу после.

Любые предложения приветствуются!

Ответы на вопрос(2)

Ваш ответ на вопрос