Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点Js ES6-递归函数调用-错误的可能循环检测”;TypeError:this.elem.method不是函数;_Node.js_Loops_Recursion_Detection - Fatal编程技术网

Node.js 节点Js ES6-递归函数调用-错误的可能循环检测”;TypeError:this.elem.method不是函数;

Node.js 节点Js ES6-递归函数调用-错误的可能循环检测”;TypeError:this.elem.method不是函数;,node.js,loops,recursion,detection,Node.js,Loops,Recursion,Detection,有了递归代码,Node Js procesor detect我们可能会有一个bucle和block执行,给出错误的错误代码 我们可以用一个简单的继承类示例重现这种情况: class A() constructor() { this.b1 = new B() } class B() { // Here we could to have a loop ( recursive inheritance ) ... this.a1 = new A() ... } 当然,我们可以使用退出条件更改此代码

有了递归代码,Node Js procesor detect我们可能会有一个bucle和block执行,给出错误的错误代码

我们可以用一个简单的继承类示例重现这种情况:

class A()
constructor()
{
this.b1 = new B()
}

class B()
{
// Here we could to have a loop ( recursive inheritance ) 
...
this.a1 = new A()
...
}
当然,我们可以使用退出条件更改此代码,这样就永远不会进入真正的循环,但node Js processor只查看堆栈类状态

一个可能的解决方案是使用不同的A、B类以避免继承重复类名,但我认为这是一个错误的解决方案

如果我们在不同的文件上有类,就会出现这个问题

有人知道节点的替代解决方案吗

这里完整的例子让你们能够直接复制。现在,错误消息与实际情况不同,但也会中断执行

a、 es6文件:

const   { B }           =   require('/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/b.es6' );


class A {

    constructor(n = 0) 
    {
        this.n  =   'My Class_name Is A'

        console.log(this.n + ' and Level ' + n)

        if (n > 0 )
            this.b1 =   new B(n)

    }
}

var a1 = new A(3)


exports.A = A
const   { A }           =   require('/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/a.es6' );


class B {
    constructor(n = 0)
    {
        this.n  =   'My Class_name Is B'
        this.a1 = ''

        console.log(this.n + ' and Level ' + n)

        if (n > 0) 
            this.a1 = new A(n - 1)

    }
}

exports.B = B
b、 es6文件:

const   { B }           =   require('/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/b.es6' );


class A {

    constructor(n = 0) 
    {
        this.n  =   'My Class_name Is A'

        console.log(this.n + ' and Level ' + n)

        if (n > 0 )
            this.b1 =   new B(n)

    }
}

var a1 = new A(3)


exports.A = A
const   { A }           =   require('/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/a.es6' );


class B {
    constructor(n = 0)
    {
        this.n  =   'My Class_name Is B'
        this.a1 = ''

        console.log(this.n + ' and Level ' + n)

        if (n > 0) 
            this.a1 = new A(n - 1)

    }
}

exports.B = B
节点结果:

/

brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa>node a.es6
我的班名是A和3级
我的班名是B和3级
/mnt/ssd/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/b.es6:16
本图a1=新的A(n-1)
^
类型错误:A不是构造函数
在新B(/mnt/ssd/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/B.es6:16:16)
在新的A(/mnt/ssd/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/A.es6:16:15)
反对。(/mnt/ssd/brqx/base/rcode/es6/spc/theme/common/yamls/sections/sa/a.es6:21:10)
在模块处编译(Module.js:624:30)
在Object.Module.\u extensions..js(Module.js:635:10)
在Module.load(Module.js:545:32)
在tryModuleLoad时(module.js:508:12)
在Function.Module.\u加载(Module.js:500:3)
位于Function.Module.runMain(Module.js:665:10)
启动时(bootstrap_node.js:201:16)
问候


里卡多。

在不知道您试图用它来完成什么的情况下,递归的基本规则适用。您需要有一个在某个点中断递归的“基本情况”。节点也一样。

确保我有基本情况。我的递归技巧很好。我没有举一个真实的例子来避免有太多的台词。所以,请使用案例库检查什么可以是简单的字符串或整数比较,您将看到使用相同消息执行节点中断。也许JSFIDLE会有所帮助?