jQuery.when().done()
在使用jQuery.when()调用外部声明方法时,如果方法不为Deferred(延时)对象,则done会立即执行,所有需要在调用的方法声明一个var deferred = $.Deferred();以达到执行完调用的方法后再执行done。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery when done</title> <script src="../jquery/jquery.min.js"></script> </head> <body> <script> $(function () { var ajaxGetData = function(){ //声明延时对象 var deferred = $.Deferred(); $.ajax({ url: '', type: 'get', dataType: 'json', data:{}, success:function(data){ alert("执行when成功,下一步才执行done"); //成功获取返回值后,调用resolve表示操作成功,才会执行done方法 deferred.resolve(); }, error:function(){ alert("操作异常"); } }); return deferred; } $.when( ajaxGetData() ).done( function() { alert("执行done成功"); } ); }) </script> </body> </html>