2016-10-26 4 views
0

静的メソッド呼び出しからイベントを発行する最も良い方法はありますか、またはベストプラクティスまたは回避策がありますか?ES6:静的メソッドからのイベントの送信

uploadを呼び出してディレクトリ内のファイルをエンドポイントに再帰的にアップロードするES6クラスがあり、個々のファイルが正常にアップロードされた後にイベントを送出したいとします。私は、クラスが新しいクラスのインスタンスをインスタンス化せずにEventEmitterを継承することができますが、.on.emit関数が存在しないことを知っています。これを回避する方法はありますか?

+0

シングルトンはどうですか? – MaxArt

+0

クラスの新しいインスタンスをインスタンス化することは、静的オブジェクトを作成することと事実上同じです。何故なの? – tcooc

+0

@MaxArt私はそれについて考えましたが、 'upload'メソッドは、' uploadFile'を個別に呼び出すので、ディレクトリ内を移動するので、その関数の中で別の静的メソッドの内部に入ります。シングルトンは場合によっては動作し、コードを変更して動作させることもできますが、メソッドを非静的にしなくても良い方法があるかどうかはわかりません。 @tcooc NodeJSランタイムは私に 'Class.on is not a function'エラーを与えています。 –

答えて

3

周囲はまったくありません。 .emit()に電話をかけたい場合は、を呼び出すことができるEventEmitterのインスタンスが必要です。もちろん、他のコードでリスナーを登録するために.on()と呼ぶものがなければならないので、これは理にかなっています。

オブジェクトごとに別のエミッタを必要としない場合は、他のオブジェクトに保存する共有エミッタを1つだけ作成することもできますし、有用なスコープまたはモジュールスコープで保存することもできます。クラス静的エミッターインスタンスがクラススタティック(起動時に初期化)の場合、静的メソッドはすべてそれを参照できます。

+0

基本的には上記の@zerkmsのコメントからこれをやり始めましたが、これは本質的に私が今やっていることです。クラスモジュールの中で、私はローカルスコープのeventemitterのインスタンスを持っています。そして、ローカル共有インスタンスに引数を渡す '.on'と' .emit'静的クラスを作成します。 –

関連する問題