0

我正在通过 chrome.sockets 将文件上传到 ftp,但套接字缓冲区的大小是有限的,所以我需要遍历 blob 并发送更小的数据块。我尝试了几种带有闭包和回调的方法,但对我有用的唯一方法是 do/while 循环,这当然是阻塞的。部分问题是需要在闭包中保留多个变量。你能建议更好的循环blob的方法吗?

do
{
    chunk = blob.slice(start,end)
    start =end
    end =end + 8192
    chrome.socket.write(this.info.socketId, Socket.string2buffer(chunk), function(writeInfo) {});
}
while (chunk.length>0);

扩展的完整代码(单用途 ftp 管理器)https://github.com/vanous/minime-content-manager/tree/master/chromium-ext-broadcast

4

1 回答 1

0

我相信以下内容应该有效:

var self=this;
var writeChunk=function(start,end){
    var chunk = blob.slice(start,end);
    chrome.socket.write(self.info.socketId, Socket.string2buffer(chunk), function(writeInfo) {
        if(chunk.length>0) writeChunk(end,end+8192);
    });
};
writeChunk(0,8192);
于 2013-11-04T18:50:41.577 回答