3
嘗試取消搜索輸入框上的$ http請求,但先前的請求似乎不會中止。我遵循其他堆棧溢出問題的例子。這裏是我的JS代碼:
var canceler;
$scope.someFunction = function() {
if(canceler)
canceler.resolve();
canceler = $q.defer();
$http({method: 'GET', url: service+url, timeout: canceler.promise}).
success(function(data, status, headers, config) { });
}
HTML:
<input ng-change="someFunction" />
如果我輸入兩個字符的搜索框中的函數被調用兩次,但初始請求仍能通過。因此,這兩個請求最終都會經過並等待響應時間的隨機響應正被使用。圖書館在某個時候是否改變了?我以前曾經工作過,但現在不再工作了。
我認爲你的方法是不正確的,你不應該發送垃圾郵件你的服務器,並在輸入改變時取消請求。相反,當用戶停止輸入時(例如,當輸入改變時,設置一個200ms的超時時間來聯繫服務器,每當輸入改變清除超時並創建一個新的時間),就會發生超時併發送請求 - 這就是通常的做法。 – MMM
MMM是對的,但這應該仍然按預期工作(即使這不是一個好習慣)。 – gkalpak
我會改變我的方法,然後看看是否能解決我遇到的問題。 – user1200387