function callWhenAlltrue(statuses: boolean[], cb: any) {
  var interval: NodeJS.Timer;
  interval = setInterval(function() {
    var isdone = statuses.reduce((pv: any, v: any) => pv && v, true);

    if (isdone) {
      clearInterval(interval);
      cb();
    }
  }, 10);
}

function callWhenXEqualY({ x, y }: { x: any; y: any }, cb: any) {
  var interval: NodeJS.Timer;
  interval = setInterval(function() {
    var isdone = x === y;
    if (isdone) {
      clearInterval(interval);
      cb();
    }
  }, 10);
}

export { callWhenAlltrue, callWhenXEqualY };
