当console.log返回值为

时间:2017-09-12 12:11:54

标签: javascript node.js

在getNestedFlags中,我将值添加到finalJson数组中。 然后在console.log之后,我可以看到整个finalJson数组的值,但resolve会返回一个空数组。您是否知道如何在console.log中获得与解析相同的结果?

getScheduledFlags: (idTc, idScheduled) => {
    return new Promise((resolve, reject) => {

        var getNestedFlags = (array1, array2, res) => {
            array1.forEach(item => {
                var childrenItems = res.filter(item1 => item1.id_parent == item.id)
                if(childrenItems.length > 1){
                    var childrens = []
                    getNestedFlags(childrenItems, childrens, res)
                    array2[item.name] = childrens
                } else {
                    array2[item.name] = item.value
                }
            })
        }

        _tc.get(idTc).then(result => {
            var flags = result.flags
            var bases = result.bases

            _featureFlags.getAll().then(allFlags => {
                tcScheduled= _featureFlags.getFinalTcFlags(result)
                res = _this.replaceFlags(allFlags, tcScheduled.flags)
                parentFlags = res.filter(item => item.id_parent == 0)

                var finalJson = []

                getNestedFlags(parentFlags, finalJson, res)

                console.log(finalJson)
                resolve(finalJson)
            })
        })
    })

},

2 个答案:

答案 0 :(得分:0)

您发布的代码必须正常工作,因为数组是通过引用而不是javascript中的值传递的。在调用console.log()函数之前和之后检查代码中的resolve()



var finalJson = []
var parentFlags ='';
var res ='';
getNestedFlags(parentFlags, finalJson, res);

console.log(finalJson);

resolve(finalJson);

console.log(finalJson);

function getNestedFlags(parentFlags, finalJson, res){
  finalJson.push(1);  
  finalJson.push(2);
  finalJson.push(3);
}

function resolve(finalJson){
   finalJson.push(4);
   finalJson.push(5);
}




答案 1 :(得分:0)

按[]初始化数组是我的问题。 现在{}一切都很好。