具有键的对象分配给函数返回undefined但console.log显示数据

时间:2017-03-09 16:56:11

标签: javascript callback undefined

我有以下内容通过循环运行返回JSON结果的响应。

我能够将所有这些数据推送到我的对象p​​roduct.variations中,没有任何问题。然而, product.variations.quantity 不会从我关联的函数返回字符串数据。附加 getProductStock 的函数称为ok,但当我尝试将数据返回到将被推送的键时,它以 undefined 的形式出现。

我感到困惑的原因是因为当我运行console.log回调函数时,我可以看到字符串数据出现没有问题。

问题是它不会返回到数量键,然后回到我的主对象产品。保持返回未定义。

任何帮助都会非常感激:)

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

}

1 个答案:

答案 0 :(得分: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
           });
           
 }