2017-07-06 29 views
0

我正在處理一個「Switch」不同的操作。在這種情況下,我試圖添加到變量「數據」只是一個產品到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; 
} 

我一直在閱讀這件事,似乎我試着運行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); 
     } 
})