Рекурсивная функция с Promise в JavaScript

Я нуждаюсь checkedNodes переменная для ожидания до завершения рекурсии, как я могу этого достичь? Как я могу сделать getcheckedNodeIds (рекурсивная функция) вернуть обещание? или, возможно, массив обещаний. nodes[i].load() Кендо UI Узлы, где load() получает дочерние узлы с удаленного сервера

var getcheckedNodeIds = function (nodes, checkedNodes) {
    for (var i = 0; i < nodes.length; i++) {
        if (nodes[i].checked) {
            checkedNodes.push(nodes[i]);

            if (nodes[i].hasChildren) {
                var nodeIndex = i;
                return nodes[i].load().done(function () {
                    getcheckedNodeIds(nodes[nodeIndex].children.view(), checkedNodes);
                });
            }
        }

        if (nodes[i].hasChildren) {
            getcheckedNodeIds(nodes[i].children.view(), checkedNodes);
        }
    }
};

var onCheck = function () {
    var checkedNodes = [];
    getcheckedNodeIds(self.treeViewWidget().dataSource.view(), checkedNodes).done(function () {
        //some action with checkedNodes
    });
};

0 ответов

Другие вопросы по тегам