2017-03-09 24 views
-1

我有一個items的數組,按順序需要POST如何同步執行可變數量的POST請求?

var items = ["data 1", "data 2", etc]; 
while (i < numOfItems) {  
    var formData = { 
     ID : ID, 
     UID : UID, 
     item : items[i]; 
    } 
    request.post({url:'http://example.com/a', formData: formData}, function(err, httpResponse, body){ 
     if (err) { 
      return console.error('Post failed:', err); 
     } 
     console.log('Post successful! Server responded with:', body); 
     i++; 
    }); 
} 

這創建了一個無限循環。我如何同步可變數量的請求?

謝謝!與您發佈的代碼

+1

你想每個請求等待前面開始之前完成? –

+0

@JaromandaX是的 – user82395214

回答

1

簡單的辦法是遞歸

var items = ["data 1", "data 2", etc]; 
function doRequest(i) { 
    if (i< numOfItems) { 
     var formData = { 
      ID : ID, 
      UID : UID, 
      item : items[i]; 
     } 
     request.post({url:'http://example.com/a', formData: formData}, function(err, httpResponse, body){ 
      if (err) { 
       // this will stop the "loop" altogether 
       return console.error('Post failed:', err); 
      } 
      console.log('Post successful! Server responded with:', body); 
      doRequest(++i); 
     }); 
    } 
}