在Web開發(fā)中,JavaScript一直是必不可少的一部分。而jQuery作為著名的JavaScript庫,更是成為了許多網(wǎng)站的標配。
$(document).ready(function(){ // jQuery代碼 })
在jQuery中,有一個非常強大的功能 —— Deferred對象。Deferred對象可以用來處理異步操作,例如Ajax請求,定時器等。當這些異步操作完成后,可以觸發(fā)相關(guān)的回調(diào)函數(shù),完成后續(xù)操作。
$.ajax({ url: '/api/example', type: 'get', success: function(data){ console.log(data); } })
然而,當我們需要同時處理多個異步操作時,就需要使用到另外一個非常有用的方法 - $.when()和.done()。$.when()可以將多個Deferred對象整合在一起,而.done()方法則會在所有的Deferred對象都完成后,執(zhí)行回調(diào)函數(shù),并按完成的順序返回所有對象的結(jié)果。
$.when($.ajax('/api/1'), $.ajax('/api/2')).done(function(result1, result2){ console.log(result1[0], result2[0]); })
需要注意的是,當$.when()的參數(shù)中包含多個項時,結(jié)果的順序與參數(shù)順序保持一致。當其中某個異步操作失敗時,$.when()方法會直接跳過后續(xù)的處理,并直接執(zhí)行失敗回調(diào)。