且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在迭代到循环的下一个迭代之前,完成FOR LOOP中的所有函数

更新时间:2022-12-09 16:28:52

最初的想法来自 Nina Scholz 对一些类似的问题。
如果你不喜欢承诺和延期对象,这个答案是好的。无论如何 Q库将是更好的选择。 data-console =truedata-babel =false> div class =snippet-code snippet-currently-hidden>

function Iterator(){var iterator = this; this.queue = []; this.add = function(callback,wait){iterator.queue.push(iterator.wait(wait)); iterator.queue.push(function(){callback(); iterator.next();}); }; this.wait = function(wait){return function(){setTimeout(iterator.next,wait); }; }; this.next = function(){iterator.queue.length&& iterator.queue.shift()(); };} var arr = [1,2,3,4,5],counter = -1; var iterator = new Iterator();(函数fillNextIteration(){if(counter> = arr.length)return; counter ++ ; iterator.add(function(){console.log('1 - counter value is'+ counter);},100); iterator.add(function(){console.log('2 - counter value is'+ counter );},100); iterator.add(function(){console.log('3 - counter value is'+ counter);},100); iterator.add(function(){console.log('计数器值是'+计数器);},100); iterator.add(fillNextIteration,100); iterator.next();})();