Javascript HTTP数据流重置响应

时间:2016-09-13 20:40:03

标签: javascript http

我一直很难用PHP编写websockets,所以我决定尝试下载一个数据流。 它可以工作,我可以在不同的时间获取内容,解析并使用它,但整个响应都保存在内存中......

有没有办法在onreadystatechange函数中每次重置请求的响应? (评论的地方)

删除评论,我收到此错误:

  

test.html:20 Uncaught TypeError:无法分配给只读属性   对象'#'的'responseText'

流媒体的工作代码:

class HTTPStream {
    constructor(url, callback, error) {
        this.request = new XMLHttpRequest();

        var previous_text = '';

        if (typeof error === "function")
            this.request.onerror = error;

        this.request.onreadystatechange = () => {
            if (this.request.readyState > 2) {
                var new_response = this.request.responseText.substring(previous_text.length);
                if(new_response != "") {
                    var result = JSON.parse(new_response);
                    callback(result);
                }
                previous_text = this.request.responseText;
                //this.request.responseText = "";
            }
        };
        this.request.open("GET", url, true);
        this.request.send();
    }

    cancel() {
        this.request.abort();
    }
}

new HTTPStream('test.php', (m) => console.log(m));

这是一个日志: enter image description here

修改

通过建议,我尝试了this,但不幸的是你可以将它设置为只写一次,就是这样。我有很多输出,而不仅仅是一次。

0 个答案:

没有答案