[英]Nested AJAX requests without a callback success function
閱讀此線程后, Ajax請求中的jQuery Ajax請求
大家好,我需要對這種情況進行解釋。 我剛剛從事開發團隊前成員的代碼工作,發現代碼的許多部分在其他ajax調用中進行了異步ajax調用。
我的問題是 :誰能解釋這種做法的優缺點,以及它是好是壞?
這是代碼示例:
// first ajax (starting ajax call)
$.ajax({
url: "script1.php",
type: "POST",
data: {paramFisrtAjax: "first-ajax"},
success: function(response) {
alert(response);
}
});
script1.php
<script>
// second ajax
$.ajax({
url: "script2.php",
type: "POST",
data: {paramFirstAjax: "<?= $_POST['paramFisrtAjax'] ?>", paramSecondAjax: "second-ajax"},
success: function(response) {
alert(response);
}
});
</script>
<?php
// some operations on database server
echo "page2 operations with param: paramFirstAjax-> {$_POST['paramFirstAjax']}";
?>
script2.php
<?php
// some operations on database server
echo "page3 operations with params: firstParam -> {$_POST['paramFisrtAjax']} and secondParam-> {$_POST['paramSecondAjax']}";
?>
有人告訴我這不是一件好事,因為我認為正確的方法是使用success
的回調函數。 像這樣: jQuery嵌套的ajax調用格式
這里有一個優點和缺點。
優點是:
1) 進行異步調用,使請求更快 。 您無需等待回調函數, 因此不必等待可能需要一段時間才能返回的響應 。 您在后台執行所有操作,而不是“直截了當”。 當您調用多個方法並且您不希望延遲等待回調時,這是可以理解的。
2) 您可以通過呼叫獲取更多的數據,同時最大程度地減少最終客戶端的等待時間。 當您要顯示大量數據並且想要以最小的努力來制作數據時,這很有用。
缺點:
1)錯誤處理是一種痛苦。 如果內部調用中發生故障,則需要花費一些時間來檢測故障發生的原因以及使用哪種方法 。 等待回調時,您可以立即檢測到錯誤發生的位置,因為它將返回成功或錯誤的響應,
2)如果數據不匹配,則很難回溯並查看丟失部分的發生位置, 您將必須逐個處理每個請求以檢測和使用開發人員工具和/或提琴手 ,因為這些是最后的異步調用。
3)很容易在客戶端上投入過多的精力,因為維護這種技術可能會導致調用多個可以同時工作的方法,從而在客戶端上產生重載,在工作時鎖定線程或DB與服務器端代碼等。
這就說明了,您現在可以自己決定要在代碼中進一步使用哪種類型的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.