CNode

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

问答
Jjesseky发布于12 年前最后回复12 年前6 回复5248 浏览0 收藏

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

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)

L
lellansin#1·12 年前

RangeError: Maximum call stack size exceeded

A
amoa400#2·12 年前

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

A
alsotang#3·12 年前

感觉不会诶

C
cool-l#4·12 年前

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

T
TossShinHwa#5·12 年前

堆栈溢出 +1

J
jysperm#6·12 年前

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

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