2017-04-18 7 views
-3

リクエストするURLのリストがある場合は、いつでも5つのリクエストを有効にしておく必要がありますが、すべてが同じ時間になるわけではないので、1つが終了すると新しいリクエストを送信します。私はいくつかのアプローチを試して、$ .allと$。ドキュメントを見てみましたが、これをどうやって行うのか分かりませんでした。時間に5アヤックスリクエストを保持する

誰かがこれを解決する正しい方向に私を指摘できますか?

+0

あなたは「いつでもキープアライブ5つの要求」とはどういう意味ですか?要求を出す以外に何の理由もない要求をし続ける必要があるのはなぜですか? – gforce301

+0

@ gforce301私はそれが非常に奇妙な言葉に同意しますが、私は彼らがリクエスト1-10を持っていると思います、5回しか実行しないので、リクエスト1が終了しても2-5が依然としてリクエスト6を呼び出しています。 – George

+0

要求する10のURLのリスト、私は10の要求を作る必要がありますか?しかし、私は同時に5を作りたいと思います。そして、そのうちの1人が終了したら別のURLを取ってリクエストしてください。 – mart

答えて

1

ないアイデアなぜあなたがこれを行う必要があるだろうが、ここに行く:

var urls = [ 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=1', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=2', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=3', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=4', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=5', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=6', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=7', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=8', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=9', 
 
     'https://jsonplaceholder.typicode.com/photos?albumId=10' 
 
    ], 
 
    running = 0; 
 

 

 

 
function startNext() { 
 

 
    if(running < 5 && urls.length) { 
 
     var url = urls.shift(); 
 

 
     $.ajax({ 
 
      url: url, 
 
      method: 'GET', 
 

 
      complete: function(xhr, status) { 
 
       console.log('completing request for:', url); 
 
       running--; 
 
      } 
 
     }); 
 

 
     console.log('number of requests running:', running); 
 
     console.log('starting request for:', url); 
 
     running++; 
 
    } 
 

 
    urls.length && setTimeout(function() { 
 
     startNext(); 
 
    }, 0); 
 
} 
 

 
startNext();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

関連する問題