1

私はjavascriptで書かれたアプリを持っています。作業するには、たくさんのファイルをダウンロードする必要があります。長くなる可能性のあるファイルがたくさんある可能性があるため、ダウンロードを非同期にしました。

function download_all(xml, callback){
    var i=0;
    while(i<xml.smil.length)
    {
        download(xml.smil[i]);
        i=i+1;
    }
    i=0;
    while(i<xml.video.length)
    {
        download(xml.video[i]);
        i=i+1;
    }
    callback(xml);
}

私の質問は: ダウンロードにはコールバックがありますが、5 つの smil と 30 のビデオがある可能性があるため、download_all のコールバックが呼び出される前にすべてのダウンロードが行われるようにするにはどうすればよいですか?

ダウンロードが完了するたびに(コールバックで)変数をインクリメントすることを考えています。

while(smildlcompleted<xml.smil.length && videodlcompleted<xml.video.length)
{
    sleep(1000);
}

Cでやったように、スリープ機能が見つからず、js/node.jsの正しい構文とは反対のようです。

コールバックの前にすべてのダウンロードが完了するのを待つ方法はありますか?

他の複数の関数が完了した後にのみJavascript関数を実行する方法を見ましたか? 、問題はまったく同じであるため (funcA()、funcB()、およびすべてが完了すると funcC())、しかし私の場合、funcA() と funcB() は必要になる前に 10 回または 20 回起動できます。 funcC() を実行します。

必要なことを行うために他の質問の回答コードを変更しようとしていますが、誰かがもっと簡単な方法を知っていますか?

4

2 に答える 2