File JSON là file văn bản thô, nó không phải là dữ liệu dạng stream, cho nên không có việc tải nửa chừng thì ngưng, ngưng thì sẽ không xài được, file bị đứt gãy -> vô nghĩa.
Ở đây, ta buộc phải tải hoàn tất nội dung JSON trả về, không thể tải 1/2 hoặc 1/N được. Nếu nguồn cung cấp có vài tùy chọn như: cho phép tải nhiều file JSON nhỏ thay vì 1 file to thì ta tải lần lượt từng file nhỏ, và cộng dung lượng khi tải về đến N mà ta đặt trước thì ngưng.
Nếu nguồn cấp JSON chỉ có file kích thước lớn thì ta không làm cách nào được nếu đang dùng cái giao thức liên quan HTML5 (hay gọi là web API) chạy trên trình duyệt.
JavaScript chạy trên môi trường NodeJS trên server (lúc này server đóng vai client mà không phải trình duyệt người dùng, người dùng lúc này là “ông lập trình backend”) thì được, lúc này nên dùng JavaScript phối hợp với ngôn ngữ lập trình mạnh trên server như Python, C++ hoặc Java để gửi tín hiệu tới thăm dò độ dài trong HEADER của giao thức HTTP rồi xử lý. Nhưng vẫn KHÔNG chắc server có tiết lộ Content-Length
(trong HEADER hay không) và cũng KHÔNG THỂ 100% tải có thể tải kiểu resume như của phần mềm Internet Download Manager được nếu server nguồn JSON không hỗ trợ.
Chủ topic chỉ có thể dùng thời gian, nếu một request mà response trả về > N giây (mình đoán là dùng setInteval) mà dữ liệu chưa về đủ thì… ngắt.
Tóm lại: JavaScript chạy trên trình duyệt là mo mặt, không giải quyết được bài toán này. Cố gắng lắm thì thử nghiên cứu mấy cái như này https://github.com/jimmywarting/StreamSaver.js/tree/master