【发布时间】:2011-08-11 12:54:51
【问题描述】:
var recurse = function(steps, data, delay) {
if(steps == 0) {
console.log(data.length)
} else {
setTimeout(function(){
recurse(steps - 1, data, delay);
}, delay);
}
};
var myData = "abc";
recurse(8000, myData, 1);
这段代码让我烦恼的是,我要传递一个字符串 8000 次。这会导致任何类型的内存问题吗?
另外,如果我使用 node.js 运行此代码,它会立即打印,这不是我所期望的。
【问题讨论】:
-
将超时设置为 1(实际上小于 30 左右)会导致浏览器在主循环的下一次迭代中执行该函数。
-
@Emil:它因实现而异。某些实现不允许您将延迟设置为小于 5 或 10,即使它们循环早于该时间。或者有人告诉我,我实际上并没有亲自去查看源代码。
标签: javascript node.js functional-programming memory-management