Angular JS (For Loop) Timer



>我有一个数组。

var a = [1,2,3,4,5,6,7,8,9,10];
for (var i = 0; i < a.length - 1; i++) {
  console.log(a);
};
为了

创建此循环的超时,我需要做什么?假设我想延迟 1 秒。

原因是因为我想从网站使用 http get(),我不想淹没它们,但是我想确保在发出下一个响应之前得到回复。但是,如果响应速度快于 1 秒,我想至少等待一秒钟。

我试过$interval,有时我会在 4 秒内从服务器收到响应,并且在响应返回之前发出更多问题。

我猜在触发下一个事件之前我需要承诺吗? 但是计时器也是?

请帮忙。

尝试 $q.serial(AngularJS 中默认不包含的函数),该函数在此处实现和解释。

var createTask = function (i) {
  return function (delay) {
    var start, end, nextRequestNeedsDelay;
    var deferred = $q.defer();
    if (delay) {
      $timeout(function() {
        start = Date.now(); 
        $http.get("/foo")
          .then(function () {
            console.log(i);
            end = Date.now();
            nextRequestNeedsDelay = end - start < 1000;
            deferred.resolve(nextRequestNeedsDelay);
          });
      }, 1);
    } else {
        start = Date.now(); 
        $http.get("/foo")
          .then(function () {
            console.log(i);
            end = Date.now();
            nextRequestNeedsDelay = end - start < 1000;
            deferred.resolve(nextRequestNeedsDelay);
          });
    }
    return deferred.promise;
  };
};
var a = [1,2,3,4,5,6,7,8,9,10];
var tasks = [];
for (var i = 0; i < a.length - 1; i++) {
  tasks.push(createTask(i));
};
$q.serial(tasks);

您可以使用角度的承诺概念。承诺提供同步设施。

我通过给出演示示例向您展示

var app = angular.module("myApp",[ ]);
app.controller("ctrl",function($scope,$q,$timeout){
var task1 = $q.defer();
task1.promice.then(function(value){
       // write a code here for your task 1 success
} ,function(value){
       // write a code here for your task 1 error
});
var task2 = $q.defer();
task2.promice.then(function(value){
      // write a code here for your task 2 success
} ,function(value){
     // write a code here for your task 2 error
});
$q.all([task1.prpmice,task2.promice])
     .then(function(){
             // write a code which is executed when both the task are completed
    } ,function(){
            // write a code which is executed when some of the task are rejected
});
}

上面的代码将帮助您理解角度的概念

最新更新