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

标签 javascript node.js

在 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/

相关文章:

java - 将 javascript 标签添加到 vaadin UI head

javascript - 在 azure 函数内发出 https 请求

node.js - 全局安装时,“tsc”在 Windows 上不被识别为内部或外部命令

javascript - 在本地和沙盒外部署 Vue 应用程序

javascript - 从标记元素数组中删除 anchor 标记 `<a href=""></a>`

javascript - 在 AngularJS 上使用本地存储来存储购物车

javascript - 用 var 重新声明对象

javascript - 取消静音视频 JS 脚本在控制台但不在页面中工作

node.js - etherpad-lite 权限被拒绝,打开 './SESSIONKEY.txt'

node.js - Passport.js - 将 {user : req. user} 隐式传递给模板?