jQuery的defer是一個(gè)非常有用的功能,可以使異步執(zhí)行的代碼有序執(zhí)行。我們來看看它是如何工作的。
// 定義了3個(gè)異步函數(shù) var defer1 = $.Deferred(); var defer2 = $.Deferred(); var defer3 = $.Deferred(); // 定義一個(gè)函數(shù),用于執(zhí)行異步函數(shù) function doSomething() { // 第一個(gè)異步函數(shù) setTimeout(function() { defer1.resolve(); }, 1000); // 第二個(gè)異步函數(shù) setTimeout(function() { defer2.resolve(); }, 2000); // 第三個(gè)異步函數(shù) setTimeout(function() { defer3.resolve(); }, 3000); } // 使用$.when,讓異步函數(shù)有序執(zhí)行 $.when(defer1, defer2, defer3).done(function() { console.log('All done!'); }); // 執(zhí)行異步函數(shù) doSomething();
通過將異步函數(shù)包裝成defer對(duì)象,并使用$.when讓它們有序執(zhí)行,可以使我們更容易地控制異步代碼的執(zhí)行順序。