0

我有一个函数可以从其他地方接收我想存储在对象中的数据。我可以将它存储在我想要的对象中,但是当我尝试在另一个文件中访问该对象的数组属性时,我不断收到一个错误,告诉我数组中没有任何内容。这是我正在使用的代码:

频谱分析仪.js:

SpectrumAnalyzer.prototype.configSAHandler = function(event)
{
  if (this.currComm < saCommands.length)
        SAConfigure(this.parent, this.configurl, saCommands[this.currComm++]);
  else {
    this.ws = SAStream(this.spectrumurl, this);
  }
}

调用

function SAStream(url,sa)
{


    ws.onmessage = function (evt) {
    //var array = window.atob(evt.data);
    if (evt.data instanceof ArrayBuffer) {
        var array = new Uint8Array(evt.data);
        sa.drawSpectrum(array);
        for (var i = 0, j = 0; j < (array.length); i += this.binWidth, j++) {
            sa.channelData[j] = array[j]; //This assignment works fine
            console.log(sa.channelData[j]); //Logging the data to the console works fine.
        }
    }
};

sa 或 SpectrumAnalyser 对象的类定义如下:

function SpectrumAnalyzer( said, parent, configurl, spectrumurl )
{
  this.id = said;
  this.parent = parent;
  this.configurl = configurl;
  this.spectrumurl = spectrumurl;
  this.channelData = new Array();

  //...rest of the function
}

主要代码包含在 current.html 中:

var sa1 = new SpectrumAnalyzer( 1, 'SA1', "ws://console.sb3.orbit-lab.org:6101", "ws://console.sb3.orbit-lab.org:6100");

// ...some other stuff

for(var i = 0; i < 256; i++)
{
    // This is the part that is giving me the error of "undefined"
    console.log(sa1.channelData[i]); 
}

我不确定为什么channelData数组在spectrumanalyser.js文件中存储值,但它没有在 current.html 的 JavaScript 部分中存储任何值。顺便说一句,构造函数中 URL 开头的“ws”SpectrumAnalyser表示我正在使用 WebSockets 来获取我的数据。任何帮助将不胜感激。如果我遗漏任何细节,请告诉我,我会很乐意提供。

4

0 回答 0