遍历一系列GET请求

时间:2019-11-06 10:06:46

标签: javascript loops get

我有一个get请求,该请求在树中查找特定的ID,然后从该ID中拉回值。我需要遍历一系列这些获取请求,每个获取请求具有相似的ID(每个ID的值增加一个)。

我已经使用硬编码值创建了一个标准循环,但是我正在努力根据来自树的动态值来设置变量。

例如,我可以这样设置一个变量:

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 :(得分:0)

我要回答的三个假设是:

  1. entry.get是同步的

  2. entry.get如果无法获得与我们传递的参数匹配的字符串,则返回nullundefined

  3. 尽管您的代码使用的是Promise,但您希望将其保留为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
    });