Javascript/HTML5 尝试创建 BinaryStreamReader

发布于 2024-10-16 08:47:48 字数 675 浏览 2 评论 0原文

我正在尝试用 javascript 创建一个简单的 binaryStreamReader 。目前我有以下内容:

function BinaryStreamReader(file){
    var reader = new FileReader();


    this.readBytes = function(start, bytes){

        reader.readAsBinaryString(file.slice(start,bytes));

        reader.onload = function(e){
            return e.target.result; //<-- this doesn't work now :P
        }

        reader.onerror = function(e){
            alert("FileError: " + e.target.error.code);
        }
    }
}

但是,我想像这样使用它

var bsr = new BinaryStreamReader();
var data = bsr.readBytes(0,128);

显然, readBytes() 不会在我的类中返回任何内容。是否可以让它返回 onLoad 返回的任何内容?

I'm trying to create a simple binaryStreamReader in javascript. Currently I have the following:

function BinaryStreamReader(file){
    var reader = new FileReader();


    this.readBytes = function(start, bytes){

        reader.readAsBinaryString(file.slice(start,bytes));

        reader.onload = function(e){
            return e.target.result; //<-- this doesn't work now :P
        }

        reader.onerror = function(e){
            alert("FileError: " + e.target.error.code);
        }
    }
}

However, I want to use it like this

var bsr = new BinaryStreamReader();
var data = bsr.readBytes(0,128);

Obviously, readBytes() isn't returning anything in my class. Is it possible to let it return whatever onLoad returns?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无法言说的痛 2024-10-23 08:47:48
    
function BinaryStreamReader(file){
    var reader = new FileReader();

    this.callback = null;

    this.ready = function(callback) {
        if(callback) {
            this.callback = callback;
        }
    }

    this.readBytes = function(start, bytes){

        reader.readAsBinaryString(file.slice(start,bytes));

        reader.onload = function(e){

            if(this.callback !== null) {
                this.callback(e.target.result);
            }
        }

        reader.onerror = function(e){
            alert("FileError: " + e.target.error.code);
        }
        return this;
    }
}

var bsr = new BinaryStreamReader();
var data = bsr.readBytes(0,128).ready(function(data) {
    alert(data);
});

这应该可以解决问题...

    
function BinaryStreamReader(file){
    var reader = new FileReader();

    this.callback = null;

    this.ready = function(callback) {
        if(callback) {
            this.callback = callback;
        }
    }

    this.readBytes = function(start, bytes){

        reader.readAsBinaryString(file.slice(start,bytes));

        reader.onload = function(e){

            if(this.callback !== null) {
                this.callback(e.target.result);
            }
        }

        reader.onerror = function(e){
            alert("FileError: " + e.target.error.code);
        }
        return this;
    }
}

var bsr = new BinaryStreamReader();
var data = bsr.readBytes(0,128).ready(function(data) {
    alert(data);
});

this should do the trick...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文