另一个函数内的getJson()返回“undefined”

时间:2017-07-06 16:31:42

标签: javascript ajax

我正在使用“切换”不同的操作。在这种情况下,我试图将一个产品添加到变量“data”到Json对象中。函数giveMeProd ..应该返回值。

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

我一直在阅读这个问题,似乎我试图运行一个异步函数并将其返回到一个同步函数。它可以通过“回调”解决,但我需要接收“id”参数,我不知道该怎么做。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的函数giveMeTheProductPlease()正在处理异步代码。它实际上会在null发出请求之前返回$.getJSON

你可以做什么:

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