jQuery的$.when()函數(shù)是一個(gè)非常有用的函數(shù),它可以幫助開發(fā)者在異步執(zhí)行的多個(gè)任務(wù)全部完成后再繼續(xù)執(zhí)行下一步操作。
$.when()函數(shù)的語法如下:
$.when(異步任務(wù)1, 異步任務(wù)2, ....).done(function() { // 所有異步任務(wù)都已經(jīng)完成,可以繼續(xù)執(zhí)行下一步操作 });
這里的異步任務(wù)可以是Ajax請求、定時(shí)器等等,只要是異步操作就可以。$.when()函數(shù)會(huì)將這些異步操作進(jìn)行封裝,并等待所有異步操作完成后執(zhí)行.done()方法中的代碼。
$.when()函數(shù)還可以接受一個(gè)或多個(gè)回調(diào)函數(shù)作為參數(shù),這些回調(diào)函數(shù)會(huì)在所有異步任務(wù)完成后依次執(zhí)行。例如:
$.when($.ajax('/api/user'), $.ajax('/api/stats')).then( function(user, stats) { // 首先輸出用戶數(shù)據(jù) console.log(user); // 然后輸出統(tǒng)計(jì)數(shù)據(jù) console.log(stats); } );
在這個(gè)例子中,我們使用了$.ajax()函數(shù)獲取了用戶數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù),然后使用$.when()函數(shù)將這兩個(gè)異步任務(wù)包裝起來。當(dāng)這兩個(gè)異步任務(wù)都完成后,我們使用.then()方法來指定回調(diào)函數(shù)。這個(gè)回調(diào)函數(shù)的參數(shù)就是異步任務(wù)的返回結(jié)果。
總之,$.when()函數(shù)是一個(gè)非常有用的函數(shù),可以幫助我們更方便地進(jìn)行異步操作的流程控制。