当console.log返回包含值的数组时,Resolve返回空数组

在getNestedFlags中,我将值添加到finalJson数组中。 然后在console.log后,我可以看到整个finalJson数组,但parsing返回一个空的数组。 你知道如何达到在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) }) }) }) }, 

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

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

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