CNode

关于那个Fibonacci的异步例子,有个疑问。

Hhack21发布于14 年前最后回复14 年前1 回复4532 浏览0 收藏
var fibonacci = exports.fibonacci = function(n) {
  if (n === 1)
    return 1;
  else if (n === 2)
    return 1;
  else
    return fibonacci(n-1) + fibonacci(n-2);
}

var fibonacciAsync = exports.fibonacciAsync = function(n, done) {
  if (n === 1 || n === 2)
    done(1);
  else {
    process.nextTick(function() {
      fibonacciAsync(n-1, function(val1) {
        process.nextTick(function() {
          fibonacciAsync(n-2, function(val2) {
            done(val1+val2);
          });
        });
      });
    });
  }
}

其实后者实现的异步函数,也就是把运算的时间延长了是吧? 只是让node在每次事件循环中只运行一次加法,而保证node可以及时响应请求是不是?

查看回复

回复 (1)

J
jiyinyiyong#1·14 年前

我的第一反应是防止递归栈溢出

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