2017-11-20 17 views
0

私は以下を実行しようとしています。別のメソッドを呼び出すES6クラスのメソッドのコールバック

listening(randomToken, self) { 
    console.log("test"); 
    } 

    startListening(randomToken) { 
    let test = caller => { 
     this.listening(randomToken, this); 
    }; 

    this.udpSocket.on("listening", test); 
    } 

別のクラスのstartListeningをconsole.log( "test")の出力と呼びます。 Chromeコンソールには表示されません。

はしかし、私が行うとき:出力が正しく表示され

startListening(randomToken) { 
    let test = caller => { 
     this.listening(randomToken, this); 
    }; 

    this.udpSocket.on("listening", this.listening(randomToken)); 
    } 

しかしは私が手:

Uncaught TypeError: "listener" argument must be a function

ですが、なぜでしょうか?もちろん、try/catchの周りにラップして表示することによるエラーを避けることができますが、これを扱うより適切な方法はありますか?

編集:私もこれが動作しないことを言及するのを忘れてしまった:

let test = caller => { 
     console.log("test"); 
    }; 

    this.udpSocket.on("listening", test); 
    } 
+0

は、だから、 'のようになります。 updSocket.on'は決してコールバックを呼び出しませんか?それはどこから来たのですか?あなたはそれによって解雇された「リスニング」イベントがあると確信していますか? – Bergi

+0

ちょっと!返信ありがとう 私はClientControllerというクラスをインスタンス化し、Reactコンポーネント(電子アプリケーションで使用しています)内からonClickイベントでclientController.startListening()メソッドを起動します。 – zorrooo

答えて

0

あなたは関数として 'テスト' を渡す必要があり、

this.udpSocket.on("listening", test());

+0

私はこれを行うたびに、私が投稿した2番目のスニペットと同じエラーを表示します。 キャッチされていないTypeError: "listener"引数は関数でなければなりません – zorrooo

関連する問題