在jQuery中使用Deferred對象來進行異步操作控制。而then()方法則是Deferred對象的一個重要方法之一。
$.ajax({ url: "example.php", dataType: "json" }).then(function(data) { // 請求成功 console.log("success: ", data); }, function() { // 請求失敗 console.log("error"); }).always(function() { // 請求完成 console.log("complete"); });
在上面的代碼中,我們使用$.ajax()方法向服務器請求數據,然后通過then()方法來處理請求成功和失敗的情況。
then()方法接受兩個參數,一個用于處理請求成功的回調函數,一個用于處理請求失敗的回調函數。如果同時需要處理請求成功與失敗的情況,則可以使用always()方法。
需要注意的是,如果then()方法中的回調函數返回了一個值,那么這個值會被傳遞到下一個then()方法中的回調函數處理,即使這個值是另一個Deferred對象。
var deferred = $.Deferred(); $.ajax({ url: "example.php", dataType: "json" }).then(function(data) { // 請求成功 console.log("success: ", data); return deferred.promise(); }).then(function() { // 上一個回調函數返回Deferred對象 console.log("next success"); }); setTimeout(function() { // 模擬異步操作 deferred.resolve(); }, 3000);
在上面的代碼中,我們返回了一個deferred.promise()對象,這個對象會在3秒鐘后被resolve。而第二個then()方法中的回調函數則會在這個deferred對象被resolve之后被調用。
總之,then()方法是Deferred對象中非常重要的一個方法,可以用來處理異步操作的成功、失敗和下一步操作。
上一篇jquery遍歷表單數據
下一篇jquery遮罩置于最底