在我的node.js項目中,我需要製作迭代API請求,所以我使用的是async.each方法。如何在node.js Express的async.each中使用請求
控制檯抱怨url沒有定義,我明白這一點,因爲我只聲明瞭url是一個數組。
我只是不知道如何可以將request()從請求模塊放在一起async.each。爲了滿足async.each()我把urls作爲第一個參數,但request()本身需要一個查詢字符串參數,它是url。
我也在用Underscore中的_.extend來合併兩個響應,但是我不確定我現在所在的位置是否在正確的位置。
有人可以請指出我在正確的方向嗎?
var urls = [];
Object.keys(result.items).forEach(function(item) {
urls.push("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=" + result.items[item].contentDetails
.videoId + "&key=xxx");
})
async.each(
urls,
request(url, function(err, response, body) {
if (err) {
console.log(err);
return;
}
body = JSON.parse(body);
}),
function() {
var extended = _.extend(result, body);
getVideoDetailsCallback(null, extended)
});
謝謝。看起來很有希望。我使用_.extend是因爲我需要將包含解析的JSON的'extended'與來自第一個API請求的響應合併。這是我以前的問題,顯示使用async.waterfall的結構。 http://stackoverflow.com/questions/34406490/node-js-dependant-api-request-calls-using-async-waterfall-and-merge-json-respo 如何合併本次迭代的JSON與另一個JSON從其他迴應? –
使用'.map'時,最終回調中收到的數據extented將是一個包含所有請求數據的數組。我可能會修改'getVideoDetailsCallback'函數來獲得這樣一個數組,並且只是將該函數作爲最後的回調函數引用,但是如果你想合併最終數組,你可能需要更多的東西 - > http:// stackoverflow.com/questions/27556728/how-can-i-merge-array-of-objects-with-underscore-js – adeneo