jquery - Recursive function that returns $.Deferred() with setTimeout -
i have recursive function returns $.deferred();
the function follows:
var mytest = function (i, deferred) { if (!deferred) { deferred = $.deferred(); } if (i < 3) { i++; console.log("recursion (" + + ")!"); return mytest(i, deferred); } else if (i === 3) { console.log("resolving!"); return deferred.resolve("woohoo, reached " + + "!"); } } /* call */ mytest(0).done(function (result) { console.log(result); }); this gives expected output of:
recursion (1)! recursion (2)! recursion (3)! resolving! woohoo, reached 3! but if change line 8 be
settimeout(function() { return mytest(i, deferred); }, 500); it fails. how can add timeout function achieve same result?
if understand trying...
var mytest = function (i) { var deferred = $.deferred(); var interval = setinterval(function(){ if (i < 3) { i++; console.log("iteration (" + + ")!"); } else { console.log("resolving!"); deferred.resolve("woohoo, reached " + + "!"); clearinterval(interval); } }, 1000); return deferred; } /* call */ mytest(0).done(function (result) { console.log(result); });
Comments
Post a Comment