składnia dla Jquery.deferred, co zapewnia obietnicę powrotu funkcji synchronicznej
Szybkie pytanie, jak używać Jquery.deferred do powolnej funkcji synchronicznej, zwraca zamiast tego obietnicę. Do tej pory zrobiłem to:
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) zawsze przechodzi, ale funkcja powiązana po „wtedy” nigdy nie odpala.
Jeśli to zrobię:
doIt().then( console.log('ah'));
„ah” pojawia się od razu, a potem „to, co mówię” 2000 ms później - chcę oczywiście odwrotnie - po dwóch sekundach otrzymuję „to, co mówię”, a potem „ah” zaraz po.
Wszelkie sugestie mile widziane!