关于那个Fibonacci的异步例子,有个疑问。
发布于 12 年前 作者 hack21 4061 次浏览 最后一次编辑是 8 年前
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 回复

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

回到顶部