0

次のように互いに依存する2つの異なるjsファイルがあります。

// slider.js
'use strict';
import Loop from './loop.js';
export default class Slider {
    constructor(elem) {
        this.elem = elem;
        this.Loop = new Loop(this.elem);
        this.Loop.routine();
    }
    updateImage() {
        console.log(
            'Cross Synchronous Test: Updated images',
            'Called the function from loop.js'
        );
    }
}
let proSlider = new Slider('Number')

// loop.js
import Slider from './slider.js';
export default class Loop {
    constructor(elem) {
        this.elem = elem;
        this.Slider = new Slider(this.elem);
        this.Slider.updateImage();
    }
    routine() {
        console.log(
            'Cross Synchronous Test: references a group of actions',
            'Called the function from Slider.js'
        );
    }
}

私の目標は、updateImage()内部で関数を呼び出し、同時にインスタンスレベルでloop.js別の関数を呼び出すことです。したがって、それらは 2 つの異なるファイルとして分離できますが、いつでも相互にアクセスできます。routine()slider.js

問題は、最大コールバック スタックと呼ばれるエラーがスローされることです。

キャッチされない RangeError: 最大呼び出しスタック サイズを超えました

Circular Dependency #1#2に関する記事をいくつか読みましたが、記事 #2 は typescript に基づいて言及しています。typescript キーワードを使用せずにコードを変更すると、ブラウザで同じエラーが発生します。

// slider.js
constructor(elem) {
    this.elem = elem;
    this.getLoop();
}
getLoop() {
    return new Loop(this.elem).routine();
}

// loop.js
constructor(elem) {
    this.elem = elem;
    this.getSlider();
}
getSlider() {
    return new Slider(this.elem).updateImage();
}

Node.jsでクロスコール関数を設定する方法はありますか?

4

1 に答える 1