Перебирая серию запросов GET - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть запрос на получение, который ищет определенный идентификатор в дереве, а затем извлекает значение из этого идентификатора. Мне нужно пройти через серию этих запросов get, каждый с одинаковым идентификатором (каждый идентификатор увеличивается в значении на единицу).

Я создал стандартный цикл, используя жестко закодированные значения, но я изо всех сил пытаюсь установитьпеременная, основанная на динамических значениях, выходящих из дерева.

Например, я могу установить переменную следующим образом:

var cars = [entry.get('sub_menu.sub_menu_link.0.title'), entry.get('sub_menu.sub_menu_link.1.title'), entry.get('sub_menu.sub_menu_link.2.title')];

Это захватывает все значения из этих областей дерева.

Но я не знаю, сколько их будет, поэтому я не могу жестко закодировать это таким образом. Мне нужно иметь возможность заменять 0, 1 и 2 в этих значениях циклом, который добавляет новый запрос get и каждый раз увеличивает целое число от "link." до ".title".

Ожидаемый результат будетдобавьте в переменную столько запросов get, сколько она найдет, с целым числом, увеличенным для каждого запроса, до тех пор, пока он не найдет больше.

Ниже приведен полный пример кода с жестко закодированными запросами get (который на самом деле не будет работатьпотому что дерево не втягивается. Только для примера):

Query.fetch()
      .then(function success(entry) {
            var subMenu = [entry.get('sub_menu.sub_menu_link.0.title'), entry.get('sub_menu.sub_menu_link.1.title'), entry.get('sub_menu.sub_menu_link.2.title')];
            var text = "";
            var i;
            for (i = 0; i < subMenu.length; i++) {
                text += subMenu[i] + "<br>";
            }
            document.getElementById("subMenu-container").innerHTML = text;
        }, 
        function error(err) {
            // err object
        });

1 Ответ

0 голосов
/ 06 ноября 2019

Я отвечаю, основываясь на трех предположениях:

  1. entry.get синхронно

  2. entry.get возвращает null или undefined если она не может получить строку, соответствующую аргументу, мы передаем ее

  3. Хотя в вашем коде используются обещания, вы хотите сохранить его в языковых функциях уровня ES5 (не ES2015 +)

См. Встроенные комментарии:

Query.fetch()
    .then(function success(entry) {
        // Loop getting titles until we run out of them, put them in `titles`
        var titles = [];
        var title;
        while (true) { // Loop until `break;`
            // Use string concat to include the value of `titles.length` (0, 1, ...) in the string
            title = entry.get('sub_menu.sub_menu_link.' + titles.length + '.title');
            if (title === null || title === undefined) {
                break;
            }
            titles.push(title);
        }
        // Use `Array.prototype.join` to join the titles together with <br> in-between
        document.getElementById("subMenu-container").innerHTML = titles.join("<br>");
    }, function error(err) {
        // Handle/report error
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...