使用jQuery我正在用Javascript編寫一個網站API調用,目前效果很好。當一個人更新文本輸入中的數字時,它會調用API並用響應更新字段。但是,當用戶快速進行大量更改時,它會產生問題。 JavaScript似乎堆積了所有查詢,並且以某種方式並排執行它們,這使得該字段被更新爲一種壓力感的外觀。Javascript如何檢查是否正在打電話,如果是,就殺了它
我認爲給用戶一個更輕鬆的界面的一種方式是在用戶完成輸入字段的半秒以前完成編輯之後才啓動API調用。我當然可以設置超時時間,但在超時之後,我需要檢查是否還沒有正在進行的呼叫。如果有,則需要停止/殺死/忽略,然後直接開始新的呼叫。
首先,這看起來像是一個合乎邏輯的方式嗎?接下來,我如何檢查通話是否正在進行?最後,我如何停止/殺死/忽略忙碌的電話?
歡迎所有提示!
[編輯] 按照要求,這裏的一些代碼,我已經有了:
function updateSellAmount() {
$("#sellAmount").addClass('loadgif');
fieldToBeUpdated = 'sellAmount';
var buyAmount = $("#buyAmount").val();
var sellCurrency = $("#sellCurrency").val();
var buyCurrency = $("#buyCurrency").val();
var quoteURL = "/api/getQuote/?sellCurrency="+sellCurrency
+"&buyAmount="+buyAmount
+"&buyCurrency="+buyCurrency;
$.get(quoteURL, function(data, textStatus, jqXHR){
if (textStatus == "success") {
$("#sellAmount").val(data);
$("#sellAmount").removeClass('loadgif');
}
});
if (fieldToBeUpdated == 'sellAmount') {
setTimeout(updatesellAmount, 10000);
}
}
$("#buyAmount").on("change keyup paste", function(){
updateSellAmount();
});
顯示一些代碼。一般來說,假設你使用的是'.ajax',那麼從它返回的延遲對象可以存儲在一個變量中,以便稍後檢查它(使用'.state()')來查看它是否已解析和/或以後鏈接呼籲,以便他們保持秩序。 –
可能的重複[如何知道jQuery是否有待處理的Ajax請求?](http://stackoverflow.com/questions/1822913/how-do-i-know-if-jquery-has-an-ajax-request -depending) –
@PatrickQ - 問題在於你提到的問題有一個選項來檢查是否有任何請求正在等待處理,但沒有解決如何停止或忽略該待處理請求並將其替換爲新請求。 – kramer65