Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问超时函数中的变量_Javascript_Angularjs_Timeout - Fatal编程技术网

Javascript 访问超时函数中的变量

Javascript 访问超时函数中的变量,javascript,angularjs,timeout,Javascript,Angularjs,Timeout,在下面的代码段中,我希望timeDiff可以设置为waitingTime。但我知道内部函数中的timeDiff只有在执行时才会得到值。如何使用元素的TIMEDIFF为give函数设置超时 var timeDiff; for (var i = 0; i < q.length; i++) { (function() { timeouts.push($timeout(function() { var element = q.s

在下面的代码段中,我希望timeDiff可以设置为waitingTime。但我知道内部函数中的timeDiff只有在执行时才会得到值。如何使用元素的TIMEDIFF为give函数设置超时

  var timeDiff;
  for (var i = 0; i < q.length; i++) {
      (function() {

          timeouts.push($timeout(function() {
              var element = q.shift(); // q is a queue
              timeDiff = element.TIMEDIFF;
              console.log(element.TIMEDIFF); //3000 
              broadcastData(element);
          }, waitingTime));

          // console.log(timeDiff + " timeiff");

          waitingTime = waitingTime + timeDiff; // 1000 + 3000
      })();
  }
var-timeDiff;
对于(变量i=0;i

简单来说,waitingTime应该取决于element.TIMEDIFF。如何做到这一点?

像这样的事情怎么样?我已经把它做得有点通用,但它应该做你希望实现的事情。在这里下一个函数的时间,可从当前执行的函数中完全配置

  var timeDiff;
  for (var i = 0; i < q.length; i++) {
      (function() {

          timeouts.push($timeout(function() {
              var element = q.shift(); // q is a queue
              timeDiff = element.TIMEDIFF;
              console.log(element.TIMEDIFF); //3000 
              broadcastData(element);
          }, waitingTime));

          // console.log(timeDiff + " timeiff");

          waitingTime = waitingTime + timeDiff; // 1000 + 3000
      })();
  }
  var waitingTime = 100;
  var q = {length: 100};
  var i = 0;
  var timeouts = [$timeout(getTimeDiff, waitingTime).then(callback)];

  function callback(newTime) {
    while(i < q.length) {
      i++;
      var promise = $timeout(getTimeDiff, newTime).then(callback);
      timeouts.push(promise);
      return promise;
    }
  }

  function getTimeDiff() {
      //here is where you would access the q and get the timediff
      waitingTime += Math.floor(Math.random() * 100);
      console.log(waitingTime + " until next tick");
      return waitingTime;
  }
var waitingTime=100;
var q={length:100};
var i=0;
var timeouts=[$timeout(getTimeDiff,waitingTime).then(callback)];
函数回调(newTime){
while(i
像这样的东西怎么样?我已经把它做得有点通用,但它应该做你希望实现的事情。在这里下一个函数的时间,可从当前执行的函数中完全配置

  var timeDiff;
  for (var i = 0; i < q.length; i++) {
      (function() {

          timeouts.push($timeout(function() {
              var element = q.shift(); // q is a queue
              timeDiff = element.TIMEDIFF;
              console.log(element.TIMEDIFF); //3000 
              broadcastData(element);
          }, waitingTime));

          // console.log(timeDiff + " timeiff");

          waitingTime = waitingTime + timeDiff; // 1000 + 3000
      })();
  }
  var waitingTime = 100;
  var q = {length: 100};
  var i = 0;
  var timeouts = [$timeout(getTimeDiff, waitingTime).then(callback)];

  function callback(newTime) {
    while(i < q.length) {
      i++;
      var promise = $timeout(getTimeDiff, newTime).then(callback);
      timeouts.push(promise);
      return promise;
    }
  }

  function getTimeDiff() {
      //here is where you would access the q and get the timediff
      waitingTime += Math.floor(Math.random() * 100);
      console.log(waitingTime + " until next tick");
      return waitingTime;
  }
var waitingTime=100;
var q={length:100};
var i=0;
var timeouts=[$timeout(getTimeDiff,waitingTime).then(callback)];
函数回调(newTime){
while(i
我做了一点改变,希望对你有用

  var timeDiff;
  for (var i = 0; i < q.length; i++) {
      (function() {

          timeouts.push($timeout(function() {
              var element = q.shift(); // q is a queue
              timeDiff = element.TIMEDIFF;
              console.log(element.TIMEDIFF); //3000 
              broadcastData(element);
          }, waitingTime));

          // console.log(timeDiff + " timeiff");

          waitingTime = waitingTime + timeDiff; // 1000 + 3000
      })();
  }
var timeDiff;
for (var i = 0; i < q.length; i++) {
    var element = q[i];
    timeDiff = element.TIMEDIFF;

    timeouts.push(setTimeout(function(data) {
        broadcastData(data.e);
    }, waitingTime, {e:element}));

    waitingTime = waitingTime + timeDiff;
}
var-timeDiff;
对于(变量i=0;i
我做了一点改变,希望对你有用

  var timeDiff;
  for (var i = 0; i < q.length; i++) {
      (function() {

          timeouts.push($timeout(function() {
              var element = q.shift(); // q is a queue
              timeDiff = element.TIMEDIFF;
              console.log(element.TIMEDIFF); //3000 
              broadcastData(element);
          }, waitingTime));

          // console.log(timeDiff + " timeiff");

          waitingTime = waitingTime + timeDiff; // 1000 + 3000
      })();
  }
var timeDiff;
for (var i = 0; i < q.length; i++) {
    var element = q[i];
    timeDiff = element.TIMEDIFF;

    timeouts.push(setTimeout(function(data) {
        broadcastData(data.e);
    }, waitingTime, {e:element}));

    waitingTime = waitingTime + timeDiff;
}
var-timeDiff;
对于(变量i=0;i
超时中的每个函数将为下一个函数设置waitingTime的目标是什么?超时中的每个函数将为下一个函数设置waitingTime的目标是什么?您测试了吗?我认为这行不通。不过我会试试的。当设置超时功能时,waitingtime应该可以使用。好的,我明白你的意思。我认为这样的结构可以工作,利用$timeout是一个承诺的事实。您测试过吗?我认为这行不通。不过我会试试的。当设置超时功能时,waitingtime应该可以使用。好的,我明白你的意思。我认为这样的结构会起作用,利用$timeout是一个承诺的事实。如果我们在超时之外使用q.shift(),那么while循环将在迭代结束时清空队列,这不是预期的行为。如果我们不使用q.shift(),会怎么样?通过元素的键获取元素。。这样行吗?如果我们在超时时间外使用q.shift(),那么while循环将在迭代结束时清空队列,这不是预期的行为。如果我们不使用q.shift(),会怎么样?通过元素的键获取元素。。这样行吗?