角度超时队列

时间:2016-06-15 20:27:16

标签: javascript angularjs

我有一个角度服务,可以调用Web API来检索我的搜索结果。我遇到的问题是角度控制器和放大器。 UI的设置方式允许每秒多次调用搜索,从而使服务排队。当一个新的进入时,我尝试解析/推迟http调用,但它似乎不是最好的解决方案。我宁愿排队在一段时间内得到的所有搜索电话,然后只执行最后一次。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

timeout(function(){
   var length = queue.length
   var item = queue[length - 1];
   queue.splice(0, length);
   processItem(item);
} , <yourtime:number>)

继续将您的请求添加到队列中。并将处理逻辑添加到processItem函数。 这可能是必要的

*注意 - 请将此视为伪代码。可能有编译错误

或者,您可以创建一个bool变量,每次发出请求时都会引用该变量,并将请求发送到真实状态。有点像这样的

function processItem(item){
 if(process){
   process = false;
  //YOUR ACTUAL PROCESSING CODE
 }
}

$timeout(function(){
 process = true;
}, <yourtime in milli seconds>)