Tag: 推迟

不确定如何实现$ .defered

这应该很简单:我有一个5秒的动画,之后我想.append(’完成’)。 我想利用推迟。 我使函数延迟,添加了一个解决语句(没有参数,所以我不确定是否需要),并让它返回一个promise。 但我无法让.append等待我的推子()执行。 $(document).ready(function () { var fader = function () { var dfr = new $.Deferred(); $(‘#container’).fadeOut(2500).fadeIn(2500); dfr.resolve(); return dfr.promise(); }; /* fader(); $(‘#container’).done(function(){ $(‘body’).append(‘Done!’); }); */ fader().done(function(){ $(‘body’).append(‘Done!’); }); }); 到目前为止我没有尝试过的任何东西都适合我。 我究竟做错了什么?

延迟对象的问题

我有一个问题,我试图通过在javascript中使用延迟对象来解决(我是新的延迟对象)。 问题:用户尝试运行一个函数(可能有很多不同的函数)。 如果函数失败…它将尝试再次登录然后再试一次(一次)。 如果登录失败。 那么一切都失败了。 这些函数和login函数包含将返回的Ajax调用。 我的问题是:在函数中的所有其他代码运行之后,我可以依赖于var dfd(在tryAjax函数的末尾)最后执行吗? 这是代码: function tryAjax(func) { var dfd = new jQuery.Deferred(); window[func]().then( function(p1,p2,p3) { //Everything worked great. No need to login. dfd.resolve(p1,p2,p3); }, function() { //func failed //try to login user again before trying. loginUser().then( function() { //Login success //Try to run func again. window[func]().then( function(p1,p2,p3) { //Func succes […]

使用Ajax Promises / Deferred

我正在尝试使用下面的代码获得Ajax promise 。 因为我的函数在启动实际的函数之前进行另一个ajax调用,为了获取authKey ,实际调用的promise (应该已经返回)为null,我不能使用.then()因为我认为我不是得到任何回报。 我不知道为什么。 我在这做错了什么? 有没有其他方法可以解决这个问题。 我调用getAjaxPromise(),如下所述,但得到null作为回报: getAjaxPromise(myUrl, true, myType, myContentType, mySuccessFunction, myFailureFunction, myData, true) .then(function(data) //.then() gives undefined-null error { //Do something with the data returned form actual Ajax call. }); self.getAjaxPromise = function(url, async, type, contentType, successCallback, errorCallback, data, isSecureCall) { if (isSecureCall) { var tokenPromise = getTokenPromiseFromServer(); //Another Ajax […]

使用jQuery.Deferred来避免嵌套的setTimeout回调

setTimeout -> console.log ‘foo’ setTimeout -> console.log ‘bar’ setTimeout -> console.log ‘baz’ , 1000 , 1000 , 1000 是否有可能用jQuery.Deferred实现相同的结果? 也许如下: someFunction() .then(-> console.log ‘foo’) .then(delay 1000) .then(-> console.log ‘bar’) .then(delay 1000) .then(-> console.log ‘baz’) 也许我错误地认为承诺使写作变得容易: 做A,然后一旦完成,做B,然后一旦完成,做C。

jQuery Deferred – 得到链式ajax调用的结果

以下问题 – 我必须多次调用ajax函数,当所有函数都完成后,将所有结果都放入数组中。 我想出了这个: function doAjax(xx){ var xdata = {json: $.toJSON({name: xx}), delay: 1}; return $.ajax({ url:”/echo/json/”, data:xdata, type:”POST” }); } var carr = [doAjax(‘a’),doAjax(‘b’),doAjax(‘c’),doAjax(‘d’)] var result = []; $.when( carr ) .done(function(data){ console.log(data); $.each(data, function(ix,val){ console.log(val.name); }); }); 在这里小提琴: http : //jsfiddle.net/Fkd9n/ 一切似乎工作正常,“console.log(data)”用响应文本写出对象,但“console.log(val.name)”始终是“未定义”。 那么一旦完成所有调用,如何将所有结果联合在一个数组中? 谢谢!