日期:2014-05-17  浏览次数:20660 次

javascript中写数据到csv文件
var fso=new ActiveXObject("Scripting.FileSystemObject");
//以写的方式打开文件
//var ForWriting=2;
//打开文件并从文件末尾开始写
var ForAppending=8;
var f;
//将内容写到指定路径
function writeFile(content,filePath){
f=fso.OpenTextFile(filePath,ForAppending,true);
f.WriteLine(content);
f.close();
}

通过ajax循环解析很多页面,然后通过writeFile方法将所有页面的数据写到CSV文件中,这里要循环几十W次,每循环一次都会fso.OpenTextFile创建一个对象,内存消耗很大,请教如何实现单例模式
之前有试过创建流写在循环外面,然后close()方法写到循环之后,但是只能写一部分数据,我想是不是ajax是异步的,请求完了,但是没处理完流就关闭了,然后就无法写入了

------解决方案--------------------
没用过楼主说的函数,不过我猜f既然有写函数,肯定有是否可以写,或者是否可以连接的函数。
楼主在if里加个判断,如果f连接断了就再执行一遍f=fso.OpenTextFile(filePath,ForAppending,true);。
之后还按你之前写的有试过创建流写在循环外面,然后close()方法写到循环之后,看看能不能解决之写入一部分就不写了这个问题
------解决方案--------------------
js的单例,不知道有没有实现方法。
看看有没有办法缓存一部分数据,到达一定量之后,再写入。