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