Resolve возвращает пустой массив, когда console.log возвращает массив со значениями

1

В getNestedFlags я добавляю значения в finalJson array. Затем после 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)
            })
        })
    })

},
  • 2
    Вы могли бы добавить больше своего кода здесь?
  • 0
    Вы можете показать функцию разрешения здесь? так что мы можем увидеть и решить вашу проблему
Показать ещё 9 комментариев
Теги:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню