javascript - 我还能用什么来代替 arguments.callee?

标签 javascript

function runProcess(){
     var todo = items.concat();
     setTimeout(function(){
        process(todo.shift());
        if(todo.length > 0){
           setTimeout(arguments.callee, 25);
        } else {
           callback(items);
        }
     }, 25);
}

我试图将这个 block 重构为一个函数

function doWork(todo){
        process(todo.shift());
        if(todo.length > 0){
           setTimeout(arguments.callee, 25);
        } else {
           callback(items);
        }
     }

但是这次给定的数组从头开始重复自身

我认为问题出现在 arguments.callee 中,那么我可以使用什么来代替它呢?
最好的问候

最佳答案

只需为您的匿名函数命名,这样您就可以通过它的名字来调用它。

function runProcess(){
     var todo = items.concat();
     setTimeout(function step() { // give it a name
        process(todo.shift());
        if(todo.length > 0){
           setTimeout(step, 25);  // call it by its name
        } else {
           callback(items);
        }
     }, 25);
}

关于javascript - 我还能用什么来代替 arguments.callee?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3874922/

相关文章:

javascript - 为什么此 HTTP 请求返回数组长度而不是内容?

javascript - 来自数组的 jQuery 代码行

JavaScript - 添加行在 tbody 标签后添加行,需要在 tbody 内添加

javascript - 无法将 GeoJSON 导入 Openlayers

javascript - 我如何使用javascript在jsp中显示json数据

javascript - ng-model 异步函数的奇怪行为

页面加载时的 Javascript 无需附加到正文

javascript - `Date.UTC()` 在 Firefox 上不再工作

javascript - 加载 Ace 导致未捕获错误 : Mismatched anonymous define() module:

javascript - 使用node.js和backbone.js将单页面应用程序转换为多页面网站