JSFiddle - React, Tailwind, and code Playground

JavaScript

var chunk_size = 1000; //1kb chunks
function next_chunk(pos, file_len){
    if(pos > file_len){
        return;
    }
    var chunk_end = pos + chunk_size < file_len ? pos + chunk_size : file_len;
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 206){
            alert(xhr.response.length);
            //request next chunk
            file_len = parseInt(xhr.getResponseHeader("Content-Range").split("/")[1]);
            next_chunk(pos + chunk_size + 1, file_len);
        }
    };
    xhr.open("get", "http://fiddle.jshell.net/img/logo.png", true);
    xhr.setRequestHeader("Range", "bytes=" + pos + "-" + chunk_end);
    xhr.send();
}
next_chunk(0, chunk_size);