Javascript同步加载表文件

时间:2016-02-23 00:58:13

标签: javascript ajax asynchronous xmlhttprequest

我知道this implementation用于调用本地文本文件。

我的问题是,我不希望它异步读取文件。相反,我希望函数读取文件并将输出作为字符串变量返回。

我的文件采用以下格式:

time    acceleration    velocity    position
0   0   0   0
0.1 0.7584280404    0.075842804 0.0075842804
0.2 0.1291023633    0.0887530404    0.0164595844
0.3 0.4040327317    0.1291563135    0.0293752158
0.4 0.8891570587    0.2180720194    0.0511824177
0.5 0.3481323377    0.2528852532    0.0764709431
0.6 0.8920292137    0.3420881745    0.1106797605
0.7 0.7375283292    0.4158410075    0.1522638613
0.8 0.2647998196    0.4423209894    0.1964959602
0.9 0.633358462 0.5056568356    0.2470616438
1   0.3901214569    0.5446689813    0.3015285419
1.1 0.4712272086    0.5917917022    0.3607077121
1.2 0.693854515 0.6611771537    0.4268254275
1.3 0.4248616176    0.7036633154    0.497191759

输出将存储在obj中,其中包含以下字段

obj.time
obj.acceleration
obj.velocity
obj.position

必须从文本文件的第一行获取这些字段。一切都是从localhost完成的,没有什么是远程的,所以我不关心加载繁重的js库需要多长时间。如果有人告诉我是否有我正在寻找的捷径,那将是很棒的。如果没有库,请告诉我至少我可以同步读取文件。

1 个答案:

答案 0 :(得分:1)

您可以使用get请求下载文件内容并自行解析数据。使用jQuery get方法(基本上可以用任何其他lib替换jQuery或忘记任何额外的库并手动生成xhr请求):

 $.ajax({
     url: 'http://domain.com/path/to/your/file.txt',
     async: true
   }).
   success(function (data) {
     var parsedData = parseMyFormat(data);
     console.log(parsedData[0].position);
   });

 function parseMyFormat (data) {
   var parsed = [];
   //split your data by new line and iterate over lines
     var item = {};
     //split each line by tab (\t) and put 
        item.time = col[0];
        item.acceleration = col[1];
        item.velocity = col[2];
        item.position = col[3];
     parsed.push(item);
 }