我在for循環中有一個rest.get請求,它發送大約20個查詢(基於前一個請求中的數據每次查詢)。我的問題是,它似乎是完全通過運行for循環,然後查詢異步運行,並與返回最快,而不是連續返回的數據響應。如果我console.log在.end函數內的forloop的索引,它是undefined,直到forloop完成,然後它是最後一個數字(即使它全部在for循環內)。我試圖按照與發送請求相同的順序保存(推送到數組)數據,因此我可以將數據與先前打印出來的獲取響應列表進行匹配。有沒有辦法將我的響應數據按照發送請求的順序分配給數組,而不是先到先得?如何將我的獲取響應數據按照我發送請求的順序分配給數組
// this function is being called inside the previous query
function carData(req, res) {
var carNameJson = [];
var resultToJson = [];
//singleCars.length is defined in a previous query and is an array of car IDs
for (var index = 0; index < singleCars.length; ++index) {
//Grab each individual car ID and concatinate it into a Query
var carNames = singleCars[index];
var carQuery = "https://queryinfo";
var finalSingleQuery = "carQuery + carNames";
// puts the data into an array of JSON objects
carNameJson = {
carID: carNames
};
// result is a global variable assigned as an empty array
// it list all the car IDs in a JSON format
result.push(carNameJson);
rest
.get(finalSingleQuery)
.proxy("http://proxyinfo")
.end(function(resp) {
resultToJson = {
carInfo: resp.body
};
// resultInfo is a global variable assigned as an empty array
resultInfo.push(resultToJson);
return resultToJson;
});
}
}
此代碼全部有效,但它給我的數據亂序,所以我無法將汽車信息匹配到汽車ID列表。我對節點很陌生,所以我可能會做這一切都是錯誤的。任何幫助,將不勝感激!
什麼發送當前時間戳與每個請求,這propogates到響應,然後通過時間戳的響應進行排序。 – Bango
如何在回覆中返回ID,以便將它們匹配起來? – ADyson
@ADyson如何在回覆中返回ID?每次我嘗試通過傳遞前一個響應中的當前請求來訪問變量(甚至是全局變量)時,我都會得到未定義的變量。 – cheesydoritosandkale