2017-03-09 6 views
0

返されたJSON結果から返されるループを実行している次のものがあります。未定義の関数を返す関数にキーが割り当てられていますが、console.logにデータが表示されます

このデータをすべて私のオブジェクトproduct.variationsにプッシュできます。問題はありません。 product.variations.quantityしかし、関連する関数から文字列データを返すことはありません。 getProductStockと呼ばれる関数はokと呼ばれますが、プッシュされるキーにデータを戻そうとするとは未定義となります。

私が混乱している理由は、console.logコールバック関数を実行したときに問題のない文字列データが表示されるためです。

問題は、数量キーに戻り、メインオブジェクトの製品に戻ってこないということです。戻り値は未定義です。

すべてのヘルプは、私は可能性のある重複した 'getProductStock'

function getProductStock(token, goods_sn, callback){ 
    var post_data = "token=" + token + "&goods_sn=" + goods_sn; 
    var api_url = 'https://randomapiurl.com/getStock?'; 

    var options = { 
    method: 'POST', 
    url: api_url, 
    data: post_data 
    }; 

    curl.request(options, function(err,data){ 
    var JSON_result = JSON.parse(data); 
     JSON_result.msg.page_result.forEach(function(data, index){ 
      callback(data.goods_number); 
     }); 
    }); 

} 
+0

と呼ば取得された機能を持って、後に続いて:)

product.variations.push({ 'identifier' : dataJSON.msg[z].sku, 'size' : dataJSON.msg[z].size, 'quantity' : getProductStock(token, dataJSON.msg[z].sku, function(stockLevel){ console.log(stockLevel); return stockLevel; }) }); 

を大いに感謝されるだろう[非同期呼び出しからの応答を返すにはどうすればいいですか?](http:// sta ckoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – gyre

答えて

0

 
 
function getProductStock(token, goods_sn, callback){ 
 
    var post_data = "token=" + token + "&goods_sn=" + goods_sn; 
 
    var api_url = 'https://randomapiurl.com/getStock?'; 
 

 
    var options = { 
 
    method: 'POST', 
 
    url: api_url, 
 
    data: post_data 
 
    }; 
 

 
    curl.request(options, function(err,data){ 
 
    var JSON_result = JSON.parse(data); 
 
     JSON_result.msg.page_result.forEach(function(data, index){ 
 
      pushData(data.goods_number); 
 
     }); 
 
    }); 
 

 
} 
 
function pushData(quantity) 
 
{ 
 

 
    product.variations.push({ 
 
       'identifier' : dataJSON.msg[z].sku, 
 
       'size' : dataJSON.msg[z].size, 
 
       'quantity' : quantity 
 
      }); 
 
      
 
} 

関連する問題