Jquery.deferredを使用して、低速の同期関数が代わりにpromiseを返すようにする方法についての簡単な質問。私がこれまでにやったことはこれです:
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)は常に通過しますが、「then」の後の連鎖関数は起動しません。
私がこれを行う場合:
doIt().then( console.log('ah'));
「ah」がすぐに表示され、2000ms後に「私が言うこと」が表示されます。もちろん逆です。2秒後に「私が言うこと」を取得し、その直後に「ah」を取得します。
どんな提案もありがたいです!