Tạo một hàm để gọi API của bạn. Trong hàm này, chúng tôi xác định yêu cầu callApiRequest = $.get(...
- mặc dù đây là định nghĩa của biến, yêu cầu được gọi ngay lập tức, nhưng bây giờ chúng tôi có yêu cầu được xác định là biến. Trước khi yêu cầu được gọi, chúng tôi kiểm tra xem biến của chúng tôi có được xác định typeof(callApiRequest) != 'undefined'
hay không và nếu nó đang chờ xử lý suggestCategoryRequest.state() == 'pending'
- nếu cả hai đều đúng, chúng tôi .abort()
sẽ yêu cầu ngăn chặn cuộc gọi lại thành công.
// We need to wrap the call in a function
callApi = function () {
//check if request is defined, and status pending
if (typeof(callApiRequest) != 'undefined'
&& suggestCategoryRequest.state() == 'pending') {
//abort request
callApiRequest.abort()
}
//define and make request
callApiRequest = $.get("https://example.com", function (data) {
data = JSON.parse(data); //optional (for JSON data format)
//success callback
});
}
Máy chủ / API của bạn có thể không hỗ trợ hủy bỏ yêu cầu (điều gì xảy ra nếu API đã thực thi một số mã?), Nhưng cuộc gọi lại javascript sẽ không kích hoạt. Điều này rất hữu ích, ví dụ khi bạn đang cung cấp các đề xuất đầu vào cho người dùng, chẳng hạn như đầu vào hashtags.
Bạn có thể mở rộng thêm chức năng này bằng cách thêm định nghĩa về gọi lại lỗi - điều gì sẽ xảy ra nếu yêu cầu bị hủy bỏ.
Trường hợp sử dụng phổ biến cho đoạn mã này sẽ là một kiểu nhập văn bản kích hoạt keypress
sự kiện. Bạn có thể sử dụng thời gian chờ, để ngăn việc gửi (một số) yêu cầu mà bạn sẽ phải hủy .abort()
.