0

重複の可能性:
each()関数内での複数のajax呼び出し..すべてが終了したら、何かを実行しますか?

次の関数について考えてみます。

function suggestSong(songs){
    console.log("Suggesting song from songs:", songs);
    var self = this;
    var totalRelatedVideos = [];
    var count = 0;

    $.each(songs, function(){
        count++;
        self.getRelatedVideos(this.videoId, function(relatedVideos){
            count--;
            totalRelatedVideos = totalRelatedVideos.concat(relatedVideos);
        });
    });

    var maxWaitTime = 1000; 
    var waitTime = 200;
    var elapsedTime = 0;
    var waitInterval = setInterval(function(){
        elapsedTime += waitTime;
        if(count == 0 || elapsedTime >= maxWaitTime){
            clearInterval(waitInterval);
            console.log("I found related videos: " + totalRelatedVideos.length);
        }
    }, waitTime );
};

これは、別のコードを実行する前に、非同期イベントのコレクションが終了するのを待つことを現在実装している方法です。ただし、実行するコードはほとんどありません。同じ結果を達成するためのより鈍い方法があるかどうか疑問に思いましたか?

4

0 に答える 0