2017-07-06 3 views
0

"スイッチ"の操作で処理しています。この場合、変数 "data"に1つの製品だけをJsonオブジェクトに追加しようとしています。関数giveMeProd ..は値を返すべきです。別の関数内のgetJson()は "undefined"を返します

case "pvc": 
     if (option == 1) { //1 means I want a single prod. 
      data = giveMeTheProductPlease(sessionStorage.baseId); 
      console.log("result: " + data); ... 

giveMeTheProduct機能:私は問題について読んでてきた

function giveMeTheProductPlease(id) { 
    var aux = null; 
    $.getJSON("./data/results.json", function (data) { 

     var l = Object.keys(data).length; 
     for (var i = 0; i < l; i++) { 
      if (data[i].id == id) { 
       console.log(data[i]); 
       aux = data[i]; 

      } 
     } 
    }) 
    return aux; 
} 

、それはImはasyncronous機能を実行し、syncronous機能にそれを返すようにしようとしているようです。それは "コールバック"で解決することができますが、私は "ID"パラメータを受け取る必要があり、私はそれを行う方法を知らない。

答えて

0

あなたの関数giveMeTheProductPlease()は、非同期コードを扱っています。 $.getJSONで行われた要求が完了する前に実際にnullを返します。

あなたは何ができるかをここで

var findProduct = function(id, data) { 
    var aux = null; 
    for (var i = 0; i < data.length; i++) { 
     if (data[i].id === id) { 
      aux = data[i]; 
     } 
    } 

    return aux; 
} 

$.getJSON("./data/results.json", function (result) { 
    switch(val) { 
    case "pvc": 
     if (option == 1) { //1 means I want a single prod. 
      data = findProduct(sessionStorage.baseId, result); 
     } 
}) 
関連する問題