我通过chrome.sockets将文件上传到ftp但是套接字缓冲区大小有限,所以我需要遍历blob并发送更小的数据块。我已经尝试了几种带闭包和回调的方法,但是对我来说唯一的方法是do / while循环,这当然是阻塞的。部分问题是需要在闭包中保留的多个变量。你能建议更好的循环方式吗?
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
答案 0 :(得分: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);