如何停止/终止循环中的延迟进程

时间:2017-01-11 09:53:11

标签: javascript jquery jquery-deferred deferred

我有一个代码块,我将处理

function processBlocks(){
   var data = [1,2,3,4]; // some array
   var processItemsDeferred = [];
   for(var i = 0; i < data.length; i++){
       processItemsDeferred.push(processItem(data[i]));
   } 
   $.when.apply($, processItemsDeferred).then(everythingDone); 
 }
function processItem(data) {
   var dfd = $.Deferred();
   console.log('called processItem');
   setTimeout(function() { dfd.resolve() }, 2000); 

  return dfd.promise();
} 
function everythingDone(){
 console.log('processed all items');
} 
function mainOne() {

  processBlock();

}

mainOne()函数可以立即调用任意次。但是一旦调用了一个processBlock()函数,就应该终止旧函数的延迟进程并启动新进程。

有什么办法吗?目前,旧的延期不会被杀,另一个将开始并继续。

由于

0 个答案:

没有答案