我使用承諾發出多個請求,獲取一系列股票的歷史定價數據。如果使用承諾發出多個請求,如何匹配對請求的響應?
因爲響應可能不會以相同的順序返回,所以我需要一種方法來知道哪個響應對應於哪個請求。回覆沒有識別信息。
這裏有一個反應是什麼樣子:
{
history: {
day: {
date: '1996-01-02',
open: 61.4063,
close: 63.6719,
high: 63.6875,
low: 59.6406,
volume: 10507600
},
...
}
}
下面是我的要求:
var promises = [];
var symbols = ['MSFT', 'AAPL', 'GOOGL', 'FB', 'NVDA'];
symbols.forEach(function(symbol) {
promises.push(axios.get('https://sandbox.tradier.com/v1/markets/history', {
headers: {
Accept: 'application/json',
Authorization: 'Bearer ' + tradierACCESSTOKEN
},
params: {
symbol: symbol,
interval: 'daily',
start: '2012-01-01'
}
}));
});
axios.all(promises)
.then(function(responses) {
responses.forEach(function(response) {
var data = response.data;
// how do i know which response corresponds with the requested stock?
});
})
.catch(error => console.log(error));
什麼是'axios' in'axios.all()'? – sabithpocker
我無法理解,爲什麼很多人努力拼搏,嘗試使用名單上的承諾。更好地使用'async'會更容易,代碼更具可讀性。試試'async.map'。 http://caolan.github.io/async/docs.html#map –
@FrankRoth這會更容易嗎?你仍然有一個集合,你仍然有'iteratee',並且你仍然有一個結果處理器。你仍然需要基本相同的代碼,你只需要以不同的方式調用它。而'async.map'甚至不使用promise,hello callback-hell ... – str