0
npmリクエストモジュールを使用して、画像URLをアップロードし、URLの配列内の各オブジェクトの新しいURLリンクを取得するためのAPIに対する超基本POSTリクエストを実行しています。私はそれらを持っていると私はそれらを私の配列に押し戻すだろう。各オブジェクトでHTTP POST要求を実行するforEachループの問題
私はこの作業を行うことはできません。私は通常の文字列を介してそれを実行するときにうまく動作することができますが、私は配列を介して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);
}
}
「私はそれを返すことはできません」 - あなたは何を返すことができないのですか?あなたのコードの結果はどうなると思いますか? –
'product.extra_images'は' product.extra_images.forEach(function ...) 'の直後に変更されていると思われます。もちろん、' urlCloaker'は非同期で、すぐには実行できません。 –
extraImgResponse(err 、data)その関数がいつ正確に呼び出されるか、またあなたは約束を使用していますか? – Remario