将连续调用的函数中的值保存到数组中

Save values into an array from a function which is called consecutively

本文关键字:保存 数组 函数 连续 调用      更新时间:2023-09-26

我有一个函数,当需要在文件夹中读取文件时调用。在这种情况下,因为我在该文件夹中有3个文件,它被连续调用3次。我需要将所有文件信息保存到数组mapped_data2中,如下所示:

mapped_data2[0] = inner_data1 //first file info, 
mapped_data2[1] = inner_data2 //second file info etc. 

然而,使用我的代码,我只有第一个文件信息3次。我对全局变量有点困惑,如果你能指出问题,我将不胜感激。

下面是代码:
var mapped_data = [];
var mapped_data2 = [];                   
function o(msg) {                    
     if (msg.data) {
         var inner_data = [];
         var lines = msg.data.split(''n'); //read lines of a file
         for (var i = 2; i < lines.length; i++) {
              if (lines[i].length > 0) {
                  .. //do same data format here
                  inner_data.push([son, vactual, voutput]);    
              }  
         } 
     mapped_data = inner_data;   
     } 
     else {
         if (msg.topic == "/somefolder/somefolder") {
                  for (var i = 0; i < msg.args.length; i++) {
                  var filename = msg.args[i];
                  aw.get(filename);
                  }
         } 
     }
}
function de() { //where i wanted to use these files info
    for (var i = 0; i < 3; i++) {
         mapped_data2[i] = { key: "Group" + (i + 1), values: mapped_data };
    }
    var datam = mapped_data2;
    var den = JSON.stringify(datam);
    document.write(den);
};
function init() {
                  ..//create new client called aw for the server application and start it;
                  ..//if the connection is established:  
                  aw.onmessage = o;
                  aw.get("/somefolder/somefolder"); // request list of files in a folder                         
                 };
//when html page is being onload, call the functions init() and de()
var mapped_data2 = [];                   
function o(msg) {
     var mapped_data = []; // this doesn't need to be global
     if (msg.data) {
         var inner_data = [];
         ...             
         mapped_data = inner_data;   
     } else {
         ...
     }
     mapped_data2.push({ key: "Group" + mapped_data2.length + 1, values: mapped_data };)
     // do more stuff as in den()
}