2017-03-09 22 views
0

我有以下這是通過循環運行通過返回從返回的JSON結果的響應循環。對象與鍵分配給函數返回undefined,但console.log顯示數據

我能夠將所有這些數據推送到我的對象p​​roduct.variations中,沒有任何問題。但是,product.variations.quantity不會從我已關聯的函數返回字符串數據。附加的功能getProductStock被稱爲ok,但它會作爲undefined當我試圖將數據返回到將被推送的密鑰。

我感到困惑的原因是因爲當我運行console.log回調函數時,我可以看到字符串數據出現沒有問題。

問題是,它不會返回到數量鍵,然後推回到我的主要對象產品。保持返回undefined。

任何幫助將是非常感激:)

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; 
       }) 
      }); 

然後後來我有,這是獲得所謂的 '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

可能的複製功能[我如何從異步調用返回響應?](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 
 
      }); 
 
      
 
} 

相關問題