次のように互いに依存する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でクロスコール関数を設定する方法はありますか?