Как я могу ограничить скорость загрузки XHR2 в JavaScript

Я реализовал "загрузчик" с использованием XMLHTTPRequest, который я использую для загрузки файлов и частей файлов с использованием JavaScript. Для тестирования и, возможно, также для реальных сценариев, я хотел бы ограничить полосу пропускания, которую принимает этот загрузчик.

Один из вариантов, который я имею в виду, это останавливать и запускать загрузчик снова и снова с помощью setTimeout. Это остановит загрузку следующего http-блока. Но это довольно некрасиво...

Могу ли я как-нибудь остановить следующий запрос на чанк? возможно, поместив некоторую задержку в событие onreadystatechange. Вот код:

download:function (start, end) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", this.url, true);

    if (end) {
        xhr.setRequestHeader("Range", "bytes=" + start + "-" + end);
    }
    else {
        if (start && start > 0) {
            xhr.setRequestHeader("Range", "bytes=" + start);
        }
        else {
            start = 0;
        }
    }
    // Hack to pass bytes through unprocessed.
    xhr.overrideMimeType('text/plain; charset=x-user-defined');

    thi$ = this;
    xhr.onreadystatechange = function() {
        if (this.stopped) {
            xhr.abort();
        }
        if (typeof this.index == "undefined")
            this.index = 0;

        if (this.readyState >= 3 && this.status == 200) {
            var content = this.responseText;
            thi$.handleContent( content.substring(this.index), this.index);
            this.index = content.length;
        }
    }

    xhr.send(null);
}

0 ответов

Другие вопросы по тегам