在 getNestedFlags 中,我将值添加到 FinalJson 数组。 然后在 console.log 之后,我可以看到带有值的整个 FinalJson 数组,但解析返回一个空数组。您知道如何在解析中获得与 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);
}
关于javascript - 当 console.log 返回包含值的数组时,Resolve 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46176049/