2016-03-19 10 views
0

それぞれ10個のURLを持つ3つの配列があります。私が欲しいもの順番にajaxリクエストのグループを実行します。

は次のとおりです。最初の配列内のURLの

まずAJAXリクエストを実行します。

は、その後二番目の配列のURLのAJAXリクエストが

を実行取得し、最後に第3のアレイ要求が実行取得ursl。

答えて

0

約束(ES6)を使用してリクエストをキューに入れ、キューがクリアされたら続行できます。約束の

var array1 = ['url1', 'url2', 'url3']; 
var array2 = ['url1', 'url2', 'url3', 'url4']; 
var array3 = ['url1', 'url2']; 

function createPromiseArray(list){ 
    return new Promise(function(resolve, reject){ 
     var queue = []; 
     for(var i=0; list.length > i; i++){ 
      queue.push(doRequest(list[i])); 
     } 
     Promise.all(queue).then(function(){ 
      resolve(); 
     }); 
    } 
} 

function doRequest(url){ 
    return new Promise(function(resolve, reject){ 
     // do ajax request 
     if (!error) { 
      resolve(data); 
     }else{ 
      reject(data); 
     } 
    } 
} 

createPromiseArray(array1) 
    .then(function(){ 
     createPromiseArray(array2); 
    }) 
    .then(function(){ 
     createPromiseArray(array3); 
    }) 
    .then(function(){ 
     console.log('all done'); 
    }) 

詳細はこちらhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise

また、あなたはここにhttps://www.promisejs.org/

+0

それはある程度woked見つけることができます古いブラウザ用ポリフィルを使用する必要があります見つけることができます。 「エラーが定義されていません」というメッセージが表示されるのは、 –

+0

です。これはajax呼び出しの例です。あなたのajax呼び出しがエラーを返すときに 'var error = data.error;'のようなものを追加すると、エラー変数が定義されます。それが真実であるか偽であるかに応じて、解決または拒絶された約束が決定されます。 – AVDW

+0

私は拒否し、解決し、パラメータのデータとエラーを理解していませんでした。 –

関連する問題