我已经阅读了一些与我的问题相关的帖子,但我有点迷失了。我要做的是在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数组为空并且循环再次生成:
我想我应该使用一些wait
,但如果有人可以帮助我,我真的迷失了吗?
答案 0 :(得分:0)
我认为docker的响应迟到了,你的for循环在此之前执行,这就是你的第二个数组为空的原因
尝试使用promises。
希望这会有所帮助......