新手请教node.js不断回调会吃光内存吗?
发布于 9 年前 作者 jesseky 4326 次浏览 最后一次编辑是 8 年前 来自 问答

比如一个不断查询的函数,在查询完成后,继续调用自己,继续下一次查询,不断回调,永远都没有函数结束返回的那一刻, 这样是不是调用前的变量占用都不能释放,继续下去会吃光内存吗?

http = require(‘http’); function request() { http.get(‘http://www.baidu.com/’, function(res){ res.setEncoding(‘utf8’); res.on(‘data’, function(){ }).on(‘end’, function(){ console.log(res.headers); request(); // 继续下一次 }); }); }

6 回复

RangeError: Maximum call stack size exceeded

不会的,每个回调函数会加入事件队列,事件队列会不断的被消费,所以没关系

感觉不会诶

不会。其实这种调用并不是递归,首次调用request,调用http.get异步方法后就返回了,事件机制回调监听函数才执行下一次request

堆栈溢出 +1

不太肯定会不会有问题,但我可以肯定如果你在这里用 setImmediate 就一定不会有问题。 http://nodejs.org/api/timers.html#timers_setimmediate_callback_arg

回到顶部