2つのapisを読み込む必要があります。ロードされたときにonYouTubePlayerReady
を呼び出すYouTube APIと、ロードされたときにsoundManager.onready(...)
を呼び出すSoundManager用の別のAPI。私はこれらのサイトの準備のためにこれらのそれぞれの多くのものを行うready
関数。しかし、私は両方とも完全にロードする必要があるより多くの初期化を行うことができるように両方が完了したことを知る必要があります。これらの両方の関数が呼び出されたときに呼び出される関数をどのように持っているか考えてみましょうか?javascriptで複数のonLoadイベントが完了したことを通知する
答えて
両方のコールバックを使用します。
var callback = (function(){
var count = 0;
return function(){
count++;
if(count === 2){
//both ran and do something
}
}
})();
は、その後、両方のonloadsの終わりにちょうどん:そのif文で
callback();
事が唯一の二度目に私が呼ばSこの機能を実行します。
小フィドルのデモ:
var aDone = false;
var bDone = false;
function whenADone(){
// do your other stuff
aDone = true;
if(bDone) whenBothDone();
}
function whenBDone(){
// do your other stuff
bDone = true;
if(aDone) whenBothDone();
}
おそらくDeferedの方が良い方法ですが、これは簡単であり、うまくいくはずです。ロードしたものとロードしなかったものを追跡してください。
var status = {
youtube: false,
sound: false
};
var loaded = function() {
if (!status.youtube) return;
if (!status.sound) return;
// load stuff!
};
var onYoutubePlayerReady = function() {
status.youtube = true;
loaded();
};
soundManager.onready = function() {
status.sound = true;
loaded();
}
あなたのreadys
の両方があり、その後真にそれらの$(document).ready(function() { if (youTube === true && soundManager === true) { // Do stuff }});
に対するテストをブール値を設定している可能性が:ちょうどカップルのフラグを設定http://jsfiddle.net/maniator/2X8rF/
これも役立つのを助けるために幸せ。答えに感謝します。 – Alexis
のjQueryを使用している場合、延期を見てみましょう:
http://www.erichynds.com/jquery/using-deferreds-in-jquery/
http://api.jquery.com/category/deferred-object/
おかげjQuery deferredを使用して
リンクのみの回答は役に立たないので、この場合に遅延がどのように役立つかを説明してください。リンクは問題ありませんが、あなたが何を意味するのかを知るには別のページに行く必要はありません。さらなる説明のためのリンクは問題ありません。 –
を、あなたはそれぞれのレディ機能のための約束を構築し、それらを組み合わせることができjQuery.whenを使用して最終的な動作をトリガします。
function promiseYoutube() {
var dfd = $.Deferred();
window.onYoutubePlayerReady = function() {
console.log("Youtube");
dfd.resolve();
};
return dfd.promise();
}
function promiseSoundManager() {
var dfd = $.Deferred();
window.soundManager.onready = function() {
console.log("SoundManager");
dfd.resolve();
};
return dfd.promise();
}
$.when(promiseYoutube(), promiseSoundManager()).then(function(){
console.log('Youtube+SoundManager');
});
、あなたは(https://github.com/Raynos/after.js)[後]衣替えこれらのコールバックにhttp://jsfiddle.net/nikoshr/hCznB/
非常にクールです。偉大な答えをありがとう。それはうまくいくかもしれませんが、問題のためにもう少し複雑です。私は間違いなくこのことを覚えています。ありがとう。 – Alexis
- 1. タスクが完了したことをデスクトップに通知
- 2. スレッドが完了したイベントと完了したイベント
- 3. 完了したイベント通知 - 日付のタイムゾーン
- 4. ジョブが完了したときに通知を返します。
- 5. AzureでRemove-AzureStorageShareが完了したときの通知方法
- 6. データフロージョブが完了したときにGoogle PubSubに通知する
- 7. UITableViewのリロードが完了したときの通知方法
- 8. Windows Phone:Deployment.Current.Dispatcher.BeginInvokeが完了したときの通知方法
- 9. mysqldumpが完了したときの通知方法
- 10. リスナースクリプトが完了し、ユーザに通知するためのAjaxコール
- 11. Event.respondWithが完了したことを知る方法(Event.respondWith()のコールバック
- 12. FragmentTransactionが完了したときのイベント
- 13. WP7 HttpWebRequest複数のリクエストが完了したときを知る方法?
- 14. 手順が完了すると、ユーザーに通知します
- 15. GIFの再生が完了したことを知ります
- 16. 通知を作成すると現在のアクティビティが完了しました
- 17. C#.NETタスク:複数のタスクが完了したときに通知を受け取る方法
- 18. fitToView()が完全に終了したことを知る方法
- 19. WPF、タスクが完了したことを知るhowto
- 20. webview javascriptイベント通知
- 21. では、プロキシが通話を完了したことを店に通知する最良の方法は何ですか?書き込みイベント?リフレッシュ?
- 22. すべての観測値が完了したときに通知する
- 23. は、リモートマシンでジョブが完了したときに通知します
- 24. ラムダ機能が完了したことをユーザにどのように通知するのですか?
- 25. アプリが終了したときの通知通知(iOS)
- 26. アクティビティが完了したときの通知を避ける方法
- 27. Azureは、SQLデータベースのデプロイメントが完了した時点でプログラムに通知することはできますか?
- 28. 通知pendingIntent contentアクティビティが完了したときにインテントが失敗します。
- 29. イベント/関数がjqueryまたはjavascriptで完了するまで一時停止
- 30. ダウンロードが完了したことをコントローラに通知するにはどうすればよいですか?
をシミュレートフィドル – Raynos
@Raynos例えば笑私もそのアプト知りませんでした:-P – Neal
ありがとう!魅力のように働いた:) – Alexis