2016-07-23 5 views
0

私はある種の質問をしていますが、ウェブ上で回答を見つけることができませんでした。callback()が実行されないとどうなりますか?

パラメータでコールバックを使用するjavascript関数では、の中に常にcallback()を含める必要がありますか? callback()が時々実行されるだけなら、パフォーマンス上の問題はありますか?

このコードでは、callback()は必ずしも呼び出されるべきではありません。関数do_this()に対してこの呼び出しを多く実行すると、パフォーマンス上の問題が発生してもコールバックは返されません。

+1

パフォーマンス上の問題?コールバックが実行されていることに依存する制御フローがある場合、それはストールしますが、パフォーマンスの問題はありません。 'callback'を0、または特定の要因に応じて何度も実行できるように見えることを考えると、実際には一貫性のない関数シグネチャのように見えます。 –

+0

パラメータを渡しても、パフォーマンスにまったく影響はありません。起こることは、関数のパラメータを渡す際に使用される追加のバイトがあることだけです。 あなたは行くのが良いです! –

答えて

0

どのようなパフォーマンスの問題について話しているのかわかりません。それは他の方法(関数を呼び出すのが遅いかもしれません)に意味をなさないでしょう。

したがって、簡単な答えはで、です。渡された関数が実行されないと、パフォーマンスにはまったく影響はありません(それは間違いなく速くなります)。

唯一の「欠点」は、実際には必要ないときに関数を渡す代価を支払うことですが、それは巨大な価格ではありません。

+0

これは、これが存在するかもしれない制御フローに言及する価値があるかもしれませんし、 'callback'を1以外の時間実行することから逸脱すると、制御フローで予期しない動作が起こるか、実行されないとストールすることになります。 –

+0

コールバックを複数回呼び出すのは悪い考えです。 – Ven

+0

サンプルコードではすぐにはわかりませんが、「複数のコールバック」のセクションを参照してください(http://caolan.github.io/async/) –

1

いいえ、ロジックのみで問題が発生します。

コールバックが呼び出されない場合は、プログラムがコールの発生状況を知ることができないことを意味します。ただし、サンプルでは、​​エミットコールバックを取得してコールバック関数を呼び出さない最後のリンクを失い、ゴミ収集家の食糧になるので、実際には忘れられて正式なパフォーマンスに影響はありません。

しかし、私たちがルールを持っているときのように、結果のいくつかの信号を使用する方が良いでしょう。もし関数が何らかの状態で何かを返すならば、条件なしで何かを返すべきです。

Promisesを使用してください。それ以上は常に解決/拒否するようにしてください。そうしないと、プログラム状態を確認できなくなります。

最後に、このようなパターンを避けることは効果的ですが、より効果的です。

0

すべての返信いただきありがとうございます。

最終的には、for..loopの末尾にあるcallbackを発行するために非同期ライブラリを使用してコードを実装しましたが、別の方法でパフォーマンスが低下するかどうかは不思議でした。

関連する問題