跳到主要内容
CNode

新手请教node.js不断回调会吃光内存吗?

问答
Jjesseky发布于 12 年前最后回复 12 年前
652790

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

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)

J
jysperm#612 年前

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

T
TossShinHwa#512 年前

堆栈溢出 +1

C
cool-l#412 年前

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

A
alsotang#312 年前

感觉不会诶

A
amoa400#212 年前

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

L
lellansin#112 年前

RangeError: Maximum call stack size exceeded

参与回复

登录后即可参与回复。登录