2012-03-03 12 views
1

というJavaScript関数は、Flashのマイクが音声データを収集する速度に応じて、ほぼ100 msごとに呼び出されます。JavaScript:Adobe Flashから同じ機能で複数の呼び出しをスケジュールする方法

function jsReceiveRawAudioDataFromFlash(rawData) { 
    document.write("Beginning of this JS function"); 

    // Computation expensive work 
    // I CANNOT put this work in Flash, must be in JavaScript 

    // Send it to the network (server) 

    document.write("Beginning of this JS function"); 
} 

Flashマイクがオーディオデータの断片を収集するたびに、このJavaScript関数を呼び出します。

このJS関数はrawDataを受け取り、非常に高価な計算をしてからネットワーク(サーバー)に送ります。

前回の呼び出しが完了せず、別の呼び出しが開始され、前回の呼び出しの実行されなかった部分が削除されていました。 EDIT - (私はそれを修正した後、それは落とされない、この関数内でメモリの問題を持っていた)

だから私は、コールのスケジュールを設定する必要があります。どうすればいい?

ありがとうございました。ピーター

+0

「落とした」とは? JSは単に関数の実行を落とすだけではありません。関数からグローバル変数を変更していますか? – bfavaretto

+0

@bfavarettoはい、生のオーディオデータを受け取り、それをエンコードするグローバルAudioStreamを変更します。 –

+0

@bfavaretto、私はその機能の中にメモリの問題がありました。私はそれを固定した後、落ちることはありません。 –

答えて

1

は、関数が実行中/動作していると言うことはあなたのJavaScriptとブールに配列を追加します。

関数が呼び出されると、関数がすでに実行されているかどうかをチェックし、実行されている場合は、実行するデータを配列にスタックします。

機能が終了したら、アレイ上で操作対象の項目がないかチェックしてください。何かがある場合はそれを操作し、そうでない場合はブール値をfalseに設定して待機します。

これに似たものはありますか?

+0

ご返信ありがとうございます。すでにこれを行っているライブラリはありますか? –

+0

私はこれを見つけました:http://mootools.net/docs/core125/core/Class/Class.Extras。これが私が欲しいものを満たしているかどうかはわかりません。 –

+0

私は特定のライブラリを認識していませんが、そのロジックを使用してコードを再構成しようとすることができれば、おそらくそれを改善する手助けをすることができますか? – MyStream

関連する問題