为什么我的阵列突然丢失了所有内容

时间:2017-01-04 12:02:35

标签: javascript arrays docker

我已经阅读了一些与我的问题相关的帖子,但我有点迷失了。我要做的是在Array中添加一个集合的值,在另一个中添加Docker的值。我可以将值放在2个数组中,但突然之间,seconde会丢失所有数据 有我的代码:

triggerState = Meteor.bindEnvironment(function() {
  console.log("Start triggerState");

  //clean the 2 arrays
  stateLastCheck.length = 0;
  stateDockerLastCheck.length = 0;

  //add the collection value in the array
  InfosContainers.find().forEach(Meteor.bindEnvironment(function(ctn) {
    stateLastCheck.push(ctn.stateContainer);
    console.log("stateLastCheck " + stateLastCheck.length);
  }));
  console.log("end stateLastchek");

  //take the actual values
  docker.listContainers({
    all: true
  }, Meteor.bindEnvironment(function(err, containers) {
    containers.forEach(function(containerInfo) {
      stateDockerLastCheck.push(containerInfo.State);
      console.log("stateDockerLastCheck" + stateDockerLastCheck.length);
    });
  }));
  console.log("end stateDockerLastCheck");

  //compare last with actual
  for (var i = 0; i < stateLastCheck.length; i++) {
    console.log("Size of last and docker: " + stateLastCheck.length + " et " + stateDockerLastCheck.length);
    if (stateLastCheck[i].includes(stateDockerLastCheck[i])) {
      console.log("no problemos")
    } else {
      console.log("there is a changement of state:  " + stateLastCheck[i] + stateDockerLastCheck[i]);
      break;
    }
  }
  setTimeout(triggerState, 7000);
});

然后,如果我使用我的日志,我可以突然看到docker数组为空并且循环再次生成: enter image description here

我想我应该使用一些wait,但如果有人可以帮助我,我真的迷失了吗?

在我的代码中添加一些'---'之后,我注意到输入很奇怪:enter image description here

1 个答案:

答案 0 :(得分:0)

我认为docker的响应迟到了,你的for循环在此之前执行,这就是你的第二个数组为空的原因

尝试使用promises。

希望这会有所帮助......