特定の長時間実行機能を備えたサードパーティのJavaScriptライブラリを使用しています(ネットワークを介したWebサービス呼び出しなどが含まれます)。簡単にするために、1つのパラメーター、つまり長時間実行操作が完了したときに呼び出すコールバック関数が必要であるとしましょう。したがって、署名があるとしますlongRunningFunction(callback)
。
残念ながら、この関数は「コンテキスト」パラメータを受け入れないため、longRunningFunction
複数回呼び出すと、コールバックが呼び出されたときに、どの呼び出しがどのコールバックにつながったかを知る方法がありません。
これを解決するには、無名関数を使用して次の方法を見つけました。関数を定義しmycallback(context)
、長時間実行する操作を呼び出すたびに次のようなことを行います。
uniqueContext = getUniqueContextFromSomewhere();
longRunningFunction(function() {mycallback(uniqueContext)});
これは機能するようですが、私の質問は、長時間実行操作が別のスレッドで実行されている可能性があることを考えると、JavaScript仕様に従って動作することが保証されているかどうかです。これにより、longRunningFunctionへのさまざまな呼び出しへのコールバックが発生する可能性があります。それで、私が見つけた解決策は有効ですか?