为什么setTimeout适用于无穷递归调用?

残酷的

这是我的递归函数:

function importTEI(index,data,header){
    if (index == data.length){return}

    var tei = new dhis2API.trackedEntityInstance();
    tei.excelImportPopulator(header,data[index]);
    tei.POST(requestCallback,requestCallback,index);

    function requestCallback(response){
        notificationCallback(response);
        setTimeout(function(){
            importTEI(response.importStat.index+1,importData,header);
        },0);
    }
}

使用setTimeout在函数内调用函数importTEI如果在没有setTimeout的情况下调用,则在几次请求后会出现此错误-

Uncaught RangeError: Maximum call stack size exceeded

但是有了setTimeout,它就可以永远运行。setTimeout内部发生了什么特别的事情?它不再是递归调用了吗?

任何提示,不胜感激。谢谢

杰夫·沃特金斯

它不再是递归调用。setTimeout是将来的回调,并且该调用将在“堆栈顶部”。对函数的现有调用将设置此回调,然后完成其执行,从而使递归为零。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么右递归语法不适用于自底向上LR(k)解析?

来自分类Dev

为什么ls -R(递归向下)不适用于正则表达式

来自分类Dev

JavaScript 中的因式分解仅适用于递减递归,为什么?

来自分类Dev

为什么自动激活适用于“for”?

来自分类Dev

为什么异步调用不适用于回调模式?

来自分类Dev

为什么jQueryUI手风琴不适用于ajax调用后绘制的div?

来自分类Dev

为什么我的函数适用于矩阵但为什么不适用于向量?

来自分类Dev

尾部调用优化是否适用于除递归调用以外的其他调用?

来自分类Dev

为什么附加文本区域仅适用于.text而不适用于.val?

来自分类Dev

为什么File.WriteAllBytes不适用于.db文件,但适用于.csv文件?

来自分类Dev

为什么图例选择仅适用于“ ax.twinx()”而不适用于“ ax”?

来自分类Dev

RTSP流不适用于python,但适用于VLC。为什么?

来自分类Dev

为什么一个HANDLE不适用于WriteConsoleInput,但适用于WriteFile?

来自分类Dev

为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser

来自分类Dev

Karatsuba算法适用于小数而不适用于大数,看不出为什么

来自分类Dev

为什么这种 curl 用法适用于 Windows 而不适用于 OSX / iOS?

来自分类Dev

为什么我的 sudo 命令适用于 ansible 而不适用于 ansible-playbook?

来自分类Dev

为什么忽略SIGTRAP不适用于asm?

来自分类Dev

为什么Map在Groovy中不适用于GString?

来自分类Dev

为什么绑定不适用于动画?

来自分类Dev

为什么python re模块不适用于@?

来自分类Dev

为什么向左滑动不适用于Jquery mobile?

来自分类Dev

为什么这些条件不适用于模板类型?

来自分类Dev

为什么乘法不适用于读取主机值

来自分类Dev

为什么strtok不适用于stringstream?

来自分类Dev

为什么ng-bind不适用于数组?

来自分类Dev

为什么输入模式属性不适用于数字?

来自分类Dev

为什么$别名不适用于此jQuery函数

来自分类Dev

为什么ExtractMpegFramesTest不适用于旋转的输入文件?

Related 相关文章

  1. 1

    为什么右递归语法不适用于自底向上LR(k)解析?

  2. 2

    为什么ls -R(递归向下)不适用于正则表达式

  3. 3

    JavaScript 中的因式分解仅适用于递减递归,为什么?

  4. 4

    为什么自动激活适用于“for”?

  5. 5

    为什么异步调用不适用于回调模式?

  6. 6

    为什么jQueryUI手风琴不适用于ajax调用后绘制的div?

  7. 7

    为什么我的函数适用于矩阵但为什么不适用于向量?

  8. 8

    尾部调用优化是否适用于除递归调用以外的其他调用?

  9. 9

    为什么附加文本区域仅适用于.text而不适用于.val?

  10. 10

    为什么File.WriteAllBytes不适用于.db文件,但适用于.csv文件?

  11. 11

    为什么图例选择仅适用于“ ax.twinx()”而不适用于“ ax”?

  12. 12

    RTSP流不适用于python,但适用于VLC。为什么?

  13. 13

    为什么一个HANDLE不适用于WriteConsoleInput,但适用于WriteFile?

  14. 14

    为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser

  15. 15

    Karatsuba算法适用于小数而不适用于大数,看不出为什么

  16. 16

    为什么这种 curl 用法适用于 Windows 而不适用于 OSX / iOS?

  17. 17

    为什么我的 sudo 命令适用于 ansible 而不适用于 ansible-playbook?

  18. 18

    为什么忽略SIGTRAP不适用于asm?

  19. 19

    为什么Map在Groovy中不适用于GString?

  20. 20

    为什么绑定不适用于动画?

  21. 21

    为什么python re模块不适用于@?

  22. 22

    为什么向左滑动不适用于Jquery mobile?

  23. 23

    为什么这些条件不适用于模板类型?

  24. 24

    为什么乘法不适用于读取主机值

  25. 25

    为什么strtok不适用于stringstream?

  26. 26

    为什么ng-bind不适用于数组?

  27. 27

    为什么输入模式属性不适用于数字?

  28. 28

    为什么$别名不适用于此jQuery函数

  29. 29

    为什么ExtractMpegFramesTest不适用于旋转的输入文件?

热门标签

归档