Đây là một biến jQuery sử dụng nội bộ, nhưng không có lý do để ẩn, do đó, nó có để sử dụng. Chỉ cần đứng lên, it becomes jquery.ajax.active
next release. Không có tài liệu nào vì đó là số được hiển thị nhưng không có trong API chính thức, rất nhiều thứ giống như thế này thực sự, như jQuery.cache
(trong đó tất cả jQuery.data()
hoạt động).
Tôi đoán đây bởi thực tế sử dụng trong thư viện, nó có vẻ là có độc quyền để hỗ trợ $.ajaxStart()
và $.ajaxStop()
(mà tôi sẽ giải thích thêm), nhưng họ chỉ quan tâm nếu nó 0 hay không khi một yêu cầu bắt đầu hoặc dừng lại. Tuy nhiên, vì không có lý do gì để ẩn nó, nó tiếp xúc với bạn có thể thấy số lượng thực tế của đồng thời yêu cầu AJAX hiện đang diễn ra.
Khi jQuery bắt đầu một yêu cầu AJAX, this happens:
if (s.global && ! jQuery.active++) {
jQuery.event.trigger("ajaxStart");
}
Đây là những gì gây ra sự kiện $.ajaxStart()
để bắn, số lượng kết nối chỉ đi 0-1 (jQuery.active++
không phải là 0 sau cái này và !0 == true
), điều này có nghĩa là bắt đầu yêu cầu đồng thời mới nhất. Điều tương tự cũng xảy ra ở đầu bên kia. Khi một yêu cầu AJAX dừng (vì a beforeSend
abort via return false
hoặc một ajax call complete
function runs):
if (s.global && ! --jQuery.active) {
jQuery.event.trigger("ajaxStop");
}
Đây là những gì gây ra sự kiện $.ajaxStop()
để bắn, số lượng yêu cầu đã giảm xuống còn 0, có nghĩa là đồng thời gọi AJAX cuối cùng kết thúc. Ngọn lửa other global AJAX handlers trong đó dọc theo đường đi.
Nguồn
2010-06-30 10:54:44
Đó là Nick tuyệt vời. Nhiều đánh giá cao :) – RyanP13
Tôi thấy nó được mô tả trong một cuốn sách jQuery Novice để Ninja (2010) – jmav
@Nick: Theo lời giải thích của bạn về .ajaxStop sẽ được thực hiện sau khi tất cả các cuộc gọi ajax hoàn thành. Tuy nhiên, nó sẽ được gọi nếu tất cả các cuộc gọi ajax được hoàn thành. Bạn có thể vui lòng sửa tôi nếu tôi sai. –