[英]Issue with forEach loop over array performing HTTP POST request on each object
我正在使用npm request模塊對API執行超基本的POST請求,以上傳圖片網址並為網址數組中的每個對象獲取新的網址鏈接。 一旦有了它們,我將把它們推回到陣列中。
我似乎無法完成這項工作。 當我在常規字符串上執行它時,它可以正常工作,但是當我嘗試在數組上循環http POST請求時,我無法使其返回。
我有一個數組例如:
var product = {
extra_images:
[ 'https://some.imgcdn.com/myimage1.jpg',
'https://some.imgcdn.com/myimage2.jpg',
'https://some.imgcdn.com/myimage3.jpg' ]
}
product.extra_images.forEach(function(originURL, index){
urlCloaker(originURL, extraImgResponse);
});
這是執行對API的請求的函數:
function urlCloaker(imgUrl, cloakedURLResponse){
var imgUrl = 'upload=' + imgUrl;
request('http://coolsite.com/api?' + imgUrl, function (error, response, body) {
if(error){
return console.log('Error:', error);
}
if(response.statusCode !== 200){
return console.log('Invalid Status Code Returned:', response.statusCode);
}
else {
var JSON_result = JSON.parse(body);
cloakedURLResponse(error, JSON_result.data.img_url);
}
});
}
這是我的回調:
function extraImgResponse(err, data){
if(err)
console.log("ERROR: " , err);
else {
product.extra_images.push(data);
}
}
我能夠通過創建一個單獨的數組來比較我遍歷異步請求的數組的長度來解決此問題。 當新數組的長度與我要遍歷的數組的長度相同時,我便可以存儲數據。 謝謝你的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.