イベントキューに登録したい機能があります。この機能を実行するとき、キューから退会する必要があります。他の機能への呼び出しを含む機能の購読と購読解除
functionToExecute
は実行したい機能です。
onDOMReady
は、attachDOMHandler
関数にサブスクライブし、functionToExecute
をサブスクライブし、自身をサブスクライブしません。私が持っている:
onDOMReady : function(functionToExecute){
subscribe(functionToExecute, this, true);
},
私はそれを実行した後に解除する機能が必要しかし:私は、次のしているとき
onDOMReady : function(functionToExecute){
subscribe(this.attachDOMHandler(functionToExecute));
},
attachDOMHandler : function(functionToExecute) {
unsubscribe(this.attachDOMHandler(functionToExecute));
functionToExecute();
}
すべてが正常に動作します。私の計画は、機能を実行するサブタイトルの動作を持つattachDOMHandler
関数を使用することでした。 前者を実行すると、Chromeコンソールに"Uncaught RangeError: Maximum call stack size exceeded"
が表示されます。私はループ内で捕捉されたサブスクライブ中にattachDOMHandler
を実行し続けているので意味がある無限ループに詰まっているようです。 基本的には、パラメータ渡しで指定した関数をサブスクライブする必要があります。関数が実行されると、それは登録解除されます。 私はこの大丈夫を説明してくれることを願っています。
functionToExecute();パラメータが渡される必要があります。 functionToExecute =任意の関数 – Decrypter
したがってf()はf(aFunction){ unsubscribe(aFunction)となります。 aFunction() } – Decrypter
@Decrypter:どのような引数?議論はどこから来たのですか? – pimvdb