zoukankan      html  css  js  c++  java
  • nodeis 避免回调引起的栈溢出 Maximum call stack size exceeded

    //如果这样写,会发生栈溢出
    var i = 1;
    function isEven() {
         console.log(i++);
    // return isEven();
     
         return process.nextTick(
         function () {
         return isEven();
             }
         )
    }
    //不同的javascript引擎报错可能不同
    //Outputs: Uncaught RangeError: Maximum call stack size exceeded
    //报错时,i每次都是固定的(我的是20900),
     
    console.log(isEven());
     
     
    //这样写就不会,因为 process.nextTick()定义的调用会创建一个新的子堆栈,所以不会发生栈溢出
    var i = 1;
    function isEven() {
         console.log(i++);
     
         return process.nextTick(
         function () {
         return isEven();
             }
         )
    }
  • 相关阅读:
    mangoDB
    python文档
    单例模式
    celery
    flask 部署
    json
    Docker+Jenkins+Go完成自动化部署
    Go多协程循环打印ABAC
    正则表达式
    从零开始学Go之并发(四):互斥
  • 原文地址:https://www.cnblogs.com/jichen/p/8718371.html
Copyright © 2011-2022 走看看